Cin被跳过并且cin.ignore无法正常工作

时间:2019-07-06 23:12:43

标签: c++ stream cin ignore skip

需要I / O重定向,并且我不能使用fstream。我通过I/O运行可执行文件来使用"< input.txt"重定向。在我的程序中,我使用while(cin>>line)通过I/O重定向读取文件。然后我需要cin>>x ,,但是这次是在运行时供用户输入,但是被跳过了。

我已经尝试过cin.ignore, cin.clear().

如果将cin用于I/O重定向,是否可以将cin用于同一程序中的用户输入?

/* Not sure if this is necessary but example of input file:
x y z
a b c
j k l
*/
string line;
while(cin>>line)
{
    cout<<line<<endl;
}

//I've tried these 2 lines but cin>>x is still being skipped
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

cout<<"Enter number: ";
int x;
cin>>x;// this is being skipped

1 个答案:

答案 0 :(得分:0)

我相信以下方法会有效(未试用):

string line;
while(cin>>line)
{
    cout<<line<<endl;
}

cin.close ();
cin.open ("/dev/tty");  // (or, on Windows, cin.open ("CON:");

...