提问者:小点点

为什么这个“while(cin.get(str,3))”只运行一次你放进去的东西?


while()中发生了什么? 输入流最终有EOF吗?

#include<iostream>
using namespace std;
int main()
{
        char str[10];
        while(cin.get(str,10))
          cout<<str<<endl;//only run once,why
        return 0;
}

共1个答案

匿名用户

您正在调用的iStream::Get重载读取直到换行(\n),但不读取换行本身。

下次遇到换行并且无法读取任何内容时,设置failbit,这将导致运算符bool()返回false,循环退出。

请改用Cin.GetLine