1

为什么不是这个?

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

我不是一个专业的程序员,我几乎不能认为自己是一个业余爱好者,但这是我的一点努力。
在仔细研究了网络上所有可能简单、便携和易于理解的解决方案之后(尤其是对于像我这样的新手),我还没有看到任何真正可以接受的东西(尤其是对于像我这样的新手)。
经过无数次不成功的尝试,我写了这行。它奏效了!
对我来说,这听起来像是一个非常优雅的解决方案。
我的意思是:它只是一行代码,很容易记住,它不需要任何进一步声明的变量,你不必进行太多抽象来理解它。
它有效,在每种情况下我都尝试过。
如果这不是一个好的解决方案,有没有人愿意解释它?

[编辑]

谢谢大家所有的正确答案。但无论是我还是你都没有抓住重点。我要问的不是我发布的解决方案是否有效,因为它有效!至少在我的计算机上,以及我正在处理的所有可执行文件中(我不想显得固执,请自己尝试夺走我的功劳。最后是我使用的一个示例)。你所说的副作用都没有出现。该行回答我的第一次输入,它只回答输入 - 而不是“任何”字符。我担心的是我没有看到它在任何地方写过,并认为自己是程序员中最穷的,这让我惊讶于从头开始找到解决方案。

short WaitForEnter ()
{
    cout << "Press ENTER to continue\n";
    cin.ignore (getchar(),'\n');
    return 0;
}
4

1 回答 1

1

让我们看一下忽略的定义:

istream& ignore (streamsize n = 1, int delim = EOF);

提取和丢弃字符 从输入序列中提取字符并丢弃它们,直到提取了 n 个字符,或者一个比较等于 delim。

如果到达文件结尾,该函数也会停止提取字符。如果过早达到(在提取 n 个字符或找到 delim 之前),该函数将设置 eofbit 标志。

因此,您的代码行将等待您在控制台中输入一个字符(任何字符)而不是输入(\n);

于 2013-11-14T13:50:45.103 回答