C ++ 11 for c循环与cin>> buff;

时间:2015-06-24 12:33:47

标签: string c++11 for-loop

我最近遇到过这段代码:

int count=0;
for(std::string buf; std::cin>>buf;) {
    count++;
}
std::cout << count;
  1. 我怀疑这段代码是做什么的?
  2. cin>>buf如何在条件部分工作?
  3. 是不是无限循环?
  4. 尝试在c ++ 11中编写它给我String的错误,std::stringString不同,如果是,那么{{1}需要哪个标头}

1 个答案:

答案 0 :(得分:1)

  1. 假设String在编译并运行时有效,它将构造一次,尽可能多次读取,并沿途计数。但是,count毫无意义,因为它没有初始化。

  2. cin>>buf当然是读取,但也是一个测试,当它成功读取时,表达式的计算结果为true,因此循环再次迭代。

  3. 除非用户输入EOF,否则它可能会进入无限循环。

  4. pmr关于课程是正确的:Stringstring不同。如果您想使用循环,最直接的解决方案是将其更改为std::string