我不明白下面代码中两处不同位置中的 '\0' 分别代表什么意思:
string x = "hhhdef\n";
cout << x << endl;
x[3]='\0';
cout << x << endl;
cout<<"hhh\0defef\n"<<endl;
结果:
hhhdef
hhhef
hhh
有人能给我一些指导吗?
我不明白下面代码中两处不同位置中的 '\0' 分别代表什么意思:
string x = "hhhdef\n";
cout << x << endl;
x[3]='\0';
cout << x << endl;
cout<<"hhh\0defef\n"<<endl;
结果:
hhhdef
hhhef
hhh
有人能给我一些指导吗?
C++ 的 std::string
是“计数”字符串——也就是说,它们的长度会以整数形式存储,并且可以包含任何字符。当你用 \0
替换第三个字符时,不会发生特殊情况——它会被打印为任何其他字符一样(特别地,你的控制台只是忽略它)。
然而,在最后一行中,你正在打印一个 C 字符串,其结尾由找到的第一个 \0
确定。在这种情况下,cout
会继续打印字符,直到它找到一个 \0
,而在你的情况中,这个 \0
是在第三个 h
后面的。
C++有两种字符串类型:
内置的C风格的以null结尾的字符串,实质上只是字节数组;C++标准库中的std::string
类,不是以null结尾。
打印以null结尾的字符串只会打印到第一个null字符为止。打印std::string
会打印整个字符串,无论其中间是否有null字符。
\0
是空字符,在 ASCII 表中可以找到它,它的值为 0。
它用于确定 C 风格字符串的结尾。
然而,C++ 类 std::string
将其大小存储为整数,因此不依赖于它。
\0
被视为NULL
字符。在C语言中,它用于标记字符串的结尾。\0
结尾的字符数组的指针。因此,以下是C语言中有效表示字符串的方式。char *c =”Hello”; // it is actually Hello\0
char c[] = {‘Y’,’o’,’\0′};
‘\0’的应用在于确定字符串的结尾。例如:查找字符串的长度。
\0基本上是一个空终止符,用于C语言中终止字符串字符的末尾。简单来说,它的值为null,基本上给编译器指示这是字符串字符的结尾。 让我举个例子 - 当我们写printf("Hello World"); /* Hello World\0 在这里,我们可以清楚地看到\0充当了null的作用,虽然在注释中打印字符串会给出相同的输出。