跳过cin.get()和cin.ignore()

时间:2012-10-24 04:43:21

标签: c++ cin

出于某种原因,我的程序正在跳过代码片段cin.get();cin.ignore();。我不知道为什么会发生这种情况,因为这两个片段只在main()范围内工作,而不是在if语句中。

以下是相关代码片段:

input.open(inputFileName);
if (input.fail())
{
    cout << "Error: failed to open '" << inputFileName << "'.\n\n";
    cout << "Press '' to end the program...";
    cin.get(); //cin.ignore() also does nothing.
    input.close();
    exit(1);
}

其他源代码可以在这里找到:http://pastebin.com/xy0qMvBq

3 个答案:

答案 0 :(得分:3)

cin >> inputFileName;

使用该命令,用户将键入一些“东西”,然后按Enter键。这将把“东西”加上一个换行符添加到输入缓冲区中。然后“stuff”将被存储到inputFileName中,并且换行符将留在那里。这就是cin.get()和cin.ignore()读取的内容,它们不会被跳过。

答案 1 :(得分:0)

你发布的代码部分绝对正常,在这种情况下cin.get()不会被忽略。

答案 2 :(得分:0)

尝试:

std::string dummy;
getline(std::cin,dummy);

或(如果您尚未准备好):

cin.ignore(1000,'\n'); 

cin.ignore(1000,'\ n');忽略cin puffer中的1000个“输入”(抱歉,已编辑)。