使用cin.eof()

时间:2012-10-15 08:03:17

标签: c++ cin

我有一些代码,我想使用cin.eof()来阻止我的程序读取输入。我在考虑这样做:

char array[10]
while(!cin.eof())
{
  for(int i = 0; i < 10; i++)
  {
    cin >> array[i];
  }
}

代码还在继续。但是,当我单击'\ n'时,输出我的输出。当我单击cntrl + d时,(在UNIX终端上)程序再次执行输出,然后继续结束。如何在我输入cntrl + d一次时,我的程序停止读取换行并打印输出?

感谢。

1 个答案:

答案 0 :(得分:0)

首先,cin.eof()在输入失败之前没有做任何有用的事情。 你永远不想在循环的顶部使用它。

其次,我不清楚你要做什么。 类似的东西:

std::string line;
while ( std::getline( std::cin, line ) ) {
    //  ...
}

也许?这会将一行文本读入变量line,直到 文件结束;当您遇到文件结束时,输入将失败,并且 你将离开循环。