字符和字符串
字符串
C++ 中的字符串表示使用双引号包裹的字符序列,并且会自动在字符串末尾添加 \0 表示字符串结束。
cpp
const char* str1 = "hello";
cout << strlen(str1) << '\n'; // 5
cout << sizeof("hello") << '\n'; // 6,这里多出的字节是 '\0',字符串的结束符INFO
strlen 是计算字符串长度的函数(不包含字符串结束符)。
sizeof 是计算表达式或类型占用字节大小的操作符。
需要注意字符串(除 std::string 定义的)是常量,所以这里我们使用了 const 限定符。
本质上,字符串是字符类型的数组。所以我们也可以进行如下定义:
cpp
// 以下 3 种方式等价
char str2[]{'h', 'e', 'l', 'l', 'o', '\0'};
char str3[] = {'h', 'e', 'l', 'l', 'o', '\0'};
// 因为数组变量本质是指向数组首元素的指针,所以我们可以这样写
char str4[] = "hello";WARNING
需要注意:当我们使用数组的方式定义字符串时,需要手动在末尾加上 \0。
否则,可能会出现以下情况:
cpp
char str3[]{'h', 'e', 'l', 'l', 'o'};
// 打印有可能出现乱码,因为 str3 没有 '\0',所以会一直打印内存中的值,直到遇到
// '\0'。
std::cout << str3 << '\n';