char*如何成为for循环的条件?

Jac*_*kie 6 c c++

在我正在阅读的书中,有一段代码:

string x;
size_t h=0;
for(const char* s=x.c_str();*s;++s)
    h=(h*17)^*s;
Run Code Online (Sandbox Code Playgroud)

关于这段代码,我有两个问题:

  1. 怎么可能*s是一个条件?这是什么意思?

  2. 什么"h=(h*17)^*s"意思?

感谢帮助!

Jam*_*lis 16

  1. 怎么可以成为一个条件?这是什么意思?

这意味着"虽然指出的价值s不是零." C字符串以空值终止,因此返回的字符串中的最后一个字符c_str()将是空字符(\0由所有位零表示).

  1. "h =(h*17)^*s"是什么意思?

它乘以h通过17随后xor的IT与价值指向s.

  • 给出的代码可能有一个微妙的错误.空字符是std :: strings中的有效字符.给定的函数如果对其输入为真,则不会完全处理字符串. (2认同)