定义
字符串字面量:是双引号之间的一串字符
1、字符串字面量的内存以及它如何工作的?
字符串字面量永远保存在内存的只读区域
2、为什莫要字符串字面量定义为指针?
因为数组本身就是指针
字符串的几种类型:
UTF-8,WideString,UTF-16,UTF-32
代码案例
四种类型:
const char* name1 = u8"cherno"; //未定义是不被允许的,原因:取了一个指向字符串字面量的内存位置的指针,而字符串字面量是存储在内存的只读部分的
//"cherno"; //字符串字面量,在这种情况下,字符串的最后有一个额外的字符--空终止符(\0或者实际数字0)
const wchar_t* name2 = L"cherno"; //加上L表示下面的字符串字面值由宽字符组成,两字节的字符
const char16_t* name3 = u"cherno";// 两个字节的16比特的字符
const char32_t* name4 = U"cherno";// 四个字节的32比特的字符
字符串长度
const char name[8] = "che\0rno"; // \0转义字符作为一个字符,存在隐含的\0
cout << strlen(name) << endl; //strlen计算字符串长度的函数,输出结果为3,因为它只计算直到反斜杠"\0"之前的字符数,一旦到0,它认为结束了
strlen计算字符串长度的函数,输出结果为3,因为它只计算直到反斜杠"\0"之前的字符数,一旦到0,它认为结束了
字符串附加的方法:
附加字符串方法一
using namespace std::string_literals;
string name0 = u8"cherno"s + "hello";
wstring name0 = L"cherno"s + L"hello";
u16string name0 = u"cherno"s + u"hello";
附加字符串字面量方法二
const char* example = R"(Line1
Line2
Line3
Line4)";
const char* ex = "Line1\n"
"Line2\n"
"Line3\n";