我最近遇到过这段代码:
int count=0;
for(std::string buf; std::cin>>buf;) {
count++;
}
std::cout << count;
cin>>buf
如何在条件部分工作? String
的错误,std::string
与String
不同,如果是,那么{{1}需要哪个标头} 答案 0 :(得分:1)
假设String
在编译并运行时有效,它将构造一次,尽可能多次读取,并沿途计数。但是,count
毫无意义,因为它没有初始化。
cin>>buf
当然是读取,但也是一个测试,当它成功读取时,表达式的计算结果为true,因此循环再次迭代。
除非用户输入EOF,否则它可能会进入无限循环。
pmr关于课程是正确的:String
与string
不同。如果您想使用循环,最直接的解决方案是将其更改为std::string
。