一个好的,简单的,便携式的解决方案,用于等待输入C++

A good, simple, portable solution for waiting until enter is pressed in C++

本文关键字:用于 解决方案 等待 输入 C++ 便携式 简单 一个      更新时间:2023-10-16

为什么不是这个?

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

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

[编辑]

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

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

让我们看看忽略的定义:

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

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

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

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