3

出于某种原因,我的程序正在跳过代码片段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

4

3 回答 3

3
cin >> inputFileName;

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

于 2012-10-24T04:48:29.360 回答
0

您发布的部分代码绝对可以正常工作,并且在这种情况下不会忽略 cin.get() 。

于 2012-10-24T06:26:04.073 回答
0

尝试:

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

或(如果您还没有准备好):

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

cin.ignore(1000,'\n'); 删除 cin 缓冲区中的所有字符,直到在 cin 缓冲区中找到一个 '\n' 字符或达到忽略/删除字符的最大值(在这种情况下为 1000)。

于 2018-08-03T12:24:21.460 回答