这是我的代码:
const char ca[] = {'h','e','l','l','o'};
const char* cp = ca;
while(*cp){
std::cout<<*cp<<" ";
++cp;
}
输出:
h e l l o `
为什么数组末尾有一些char值?
答案 0 :(得分:2)
您正在调用未定义的行为,因为您执行了以下操作:
.
没有将 null终结符附加到您的字符串中。因此,您将超出界限,这意味着您正在访问不属于该数组的内存,因此您看到的是非预期的角色。
要添加空终止符,只需执行以下操作:
const char ca[] = {'h','e','l','l','o'};
const char* cp = ca;
while(*cp) {
答案 1 :(得分:0)
您应该将$rawData
作为数组中的最后一个元素,否则'\0'
始终为true,直到巧合遇到null终结符while(*cp)
。
尝试:
'\0'