在这种情况下,while循环如何工作?

时间:2018-01-15 06:34:53

标签: c++ string c++11

此代码将打印一串字符:

const char* aString = "This is a string";
const char* ptrString = aString;
while(*ptrString)
{   std::cout << *ptrString;
    ptrString++;
}

我还是个新手。从我到目前为止所学到的,while循环总是在括号内有条件,如while(x <10)或其他东西。我只是不明白为什么这种情况下的while循环只有* ptrString作为它的条件。它究竟意味着什么?有人可以向我解释一下吗?

2 个答案:

答案 0 :(得分:1)

while(*ptrString)

*ptrString为空字符时停止。随着ptrStringptrString++;中递增,最终*ptrString将指向空字符。

您可以将循环体简化为

std::cout << *ptrString++; // Ideal use of post-fix operator

虽然..

答案 1 :(得分:1)

当指针到达字符串的末尾时,它会找到字符串结尾的字符串,其值为0,在转换为bool时计算结果为false。然后循环结束。