一、字面量
1、字面量
字面量可能越来越直白的走进了C++开者的代码中,那么什么是字面量呢?“Literals are the tokens of a C++ program that represent constant values embedded in the source code.”,其实非常好理解,可以简单理解为常见的变量初始化(当然还是有一些细节的不同)。特别是在c++11后,允许类变量成员在声明时即初始化,这种往往是字面量。而字面量通常需要和代码一起或存储在寄存器中。
在古老的时代,字面量这个词为什么不彰显?主要是它支持的类型太少,一般只有整形和字符型、字符串型。这样,一般就把它和定义声明混在了一起,没有专门讲的必要,即使有人把这个事儿拿出来当个事儿,大家也不会引起什么重视。可从c++11以后,编程的一些基础规则改变太大,特别是后续的标准不断的在此基础上进行推进,所以,字面量才可以成为了一个专门的小知识点。
基本上现在看,常见的类型都有了字面量:
1)、布尔型、整形、字符串(const char[] or const wchar_t[])和字符类型(char、wchar_t)
2)、指针(nullptr)(C++11)
3)、char16_t和 char32_t(Unicode字符)(c++11)
4)、浮点类型(float double long double)(c++23)
5)、size_t(zu)(c++23)
6)、用户可以自定义字面量(c++11)
2、数字字面量分割符
在会计的报表里,或者看过类似的一些文章里,用某种符号对一些数字按规律进行标示,这个就是分割符,其实就是一种让人看起来比较方便的手段。字面量分割符也是如此,它使用了“'”(单个单引号),来分割数字,让它看起来更容易理解和分析,比如:
int b = 0b1110'1011'1101'1101;
一般来说,在很长的数字或者说二进制中意义更大些。它的使用有一些前提:
1)不可以在形状不和结尾
2)不可以在位数标志(如0x,0,0b)之后
3)不可在小数点旁
4)不可连续使用
5)不可在指数表示法中使用
二、字符串和字面量
在字符串中,其实对字面的量的理解方式与其它类型是一样的。但是,字符串有一个特殊的问题,那就是里面会有一些特殊字符,比如“/”、“'”等等。这时候儿一般来说在早期使用转义字符来处理。这种转义字符处理字符串,可以在很多的代码中看到,包括开源的一些有名的框架中。这种处理方式的缺点是,不容易理解,特别是在一些字符串的拼接中,往往让新手蒙圈。那么在c++11后提供了一个简单的操作方式:
int main()
{
std::string sss = R"json(123455)json";
std::cout<<sss<<std::endl;
sss = R"test(abcd\/;")test";
std