大家好,欢迎来到IT知识分享网。
一、字面量
int b = 0b1110'1011'1101'1101;
二、字符串和字面量
在字符串中,其实对字面的量的理解方式与其它类型是一样的。但是,字符串有一个特殊的问题,那就是里面会有一些特殊字符,比如“/”、“’”等等。这时候儿一般来说在早期使用转义字符来处理。这种转义字符处理字符串,可以在很多的代码中看到,包括开源的一些有名的框架中。这种处理方式的缺点是,不容易理解,特别是在一些字符串的拼接中,往往让新手蒙圈。那么在c++11后提供了一个简单的操作方式:
int main() {
std::string sss = R"json()json"; std::cout<<sss<<std::endl; sss = R"test(abcd\/;")test"; std::cout<<sss<<std::endl; return 0; }
int main() {
string str = "my test"; std::cout << str << std::endl; std::cout << std::quoted(str) << std::endl; return 0; }
三、例程
下面看一个综合的例程:
#include <iostream> void testLiterals() {
int i = 42; int o = 052; int x = 0x2a; int X = 0X2A; int b = 0b; // C++14 int bb = 0b0001'0011'1010;//c++14 double db = 3.14'159'265'789;//c++14 unsigned long long l1 = ull; // C++11 unsigned long long l2 = 18'446'744'073'709'550'582llu; // C++14 unsigned long long l3 = 1874'6714'0939'0975'0291uLL; // C++14 unsigned long long l4 = ''0'95505'99LLU; // C++14 size_t st = 10zu; //C++23以下编译出错 float f = 1123.456f; // C++23 浮点数字面量,后缀 f double d = 1123.456; // C++23 浮点数字面量,没有后缀,默认为 double long double ld = 1273.856L; // C++23 长双精度浮点数字面量,后缀 L // 字符表示 char16_t u16char = u'C'; // Unicode 字符 'C' char32_t u32char = U'中'; // Unicode 字符 '中' // 字符串字面量 const char16_t* u16str = u"test"; // char16_t 字符串字面量 const char32_t* u32str = U"中国"; // char32_t 字符串字面量 } int main() {
testLiterals(); return 0; }
代码很简单,没啥可说的,这都是标准定义,只要照着做就好。
四、总结
其实从本文的分析就可以看出,标准的进步对编程还是非常有好处的。至少,可以减轻编译的复杂度。特别是在一些看起来不太起眼的地方,更是让开发者省心。所以,还是要与时俱进,拥抱变化。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/121223.html