std :: cin不接受输入

时间:2018-07-29 23:54:16

标签: c++

我正在尝试从“加速的C ++”中获取第一个程序。

我无法让程序保持打开状态而不关闭它,因此我决定在int i = 0;返回后放入cin >> i;main()。不幸的是,无论我把那个cin放在哪里,它似乎都不需要任何输入。

如果有帮助,它正在使用istream引用来接受cin输入。我不知道如何在此站点上输入代码。

1 个答案:

答案 0 :(得分:1)

在我成年后的大部分时间里,我使用system("PAUSE")都没有任何问题,可以保持程序窗口打开。当然,它对实时系统不好,但是它简单而强大,因为您实际上正在运行控制台命令,并且可以用来制作控制台脚本。

#include <iostream>
#include <cstdlib>

using namespace std;

inline void Pause () { cout << "\n"; system ("PAUSE); }

int main () { Pause (); }

此解决方案不是100%可移植的,但可以在PC上使用。更具便携性的解决方案是:

#include <conio.h>
#include <cstdio>

void Pause() {
  cout << "\nPress any key to continue...";
  while (_getch() < 0)
    ;
}

cin非常适合做简单的事情,但我要做的是将std库包装在C函数中并使用它们,因为它可以大大缩短编译时间,以将std库头隐藏在实现文件中。

在C ++中,首选的方法是使用std::getline()的{​​{1}},尽管许多老师不允许您使用它。

使用std::string,您还必须清除输入错误并使用cin丢弃特定数量的字符。

ignore()

我多年的经验教会了我将#include <string> string foo; cout << "Why do they always use foo? "; getline (cin, foo); cout << "You just entered" << foo; int bar; cout << "\nThe answer is because programmers like to go to the bar." "\nHow many times have you seen foo bar in an example? "; while (!(cin >> bar)) { cout << "\nPlease enter a valid number: "; cin.clear (); cin.ignore (10000, '\n'); } 字符放在输出行的开头而不是它们的结尾。