我是C ++的新手,我非常关注char数组和字符串对象。我读到char数组以字符'\0'
终止,并且字符串对象不以null结尾,除非您使用了字符串库的成员函数c_str()
。这里我有一些代码,我期待我的第一个循环永远运行,但它们都迭代大约6次。请原谅我糟糕的变量名称,但有人可以向我解释为什么字符串对象不会导致无限循环。
我在想,任何正在索引并且尚未分配值的内存位置都已由char '\0'
表示。如果是这样,请告诉我。
std::string is_terminated = "string";
char is_t[] = "string";
int i = 0;
while (is_terminated[i] != '\0') {
std::printf("Element at index %d is %c\n", i, is_terminated[i]);
i++;
}
std::printf("Times ran: %d\n", i);
int j = 0;
while (is_t[j] != '\0') {
std::printf("Element at index %d is %c\n", j, is_t[j]);
j++;
}
std::printf("Times ran: %d\n", j);