C++中带有空字节的字符串

use*_*393 -2 c++

我对C++中的字符串有疑问.如果空字节进一步进入一个索引会发生什么?如下所示.

char name [10] = "Jack";

0   1   2   3   
J | a | c | k |

name [5] = '\0';
Run Code Online (Sandbox Code Playgroud)

这是我作业中的状态.额外零点kludge.

Man*_*lio 5

"将会发生什么"是什么意思?

根据你所写的内容,你只需创建一个包含10个位置的数组,填充第一个5个位置Jack\0,然后分配\0到第六个位置.每个使用字符串的函数都会以完全相同的方式处理它,因为字符串通常以字符串结尾\0.

  • @ user1318393:取决于"字符串长度"的含义.如果字符串的长度被定义为空终止符之前的非空字符数(这是`strlen()`的工作方式),则长度保持不变.某些字符串表示允许空字符出现在字符串本身中; 在这种情况下,你会将长度从4增加到5.如果没有谈论它是如何表示的话,问"这个字符串多长时间"毫无意义.有一些字符串表示,其中一行中的两个空字符实际上意味着重要的东西. (2认同)