在c ++中应该使用什么代码而不是getche

时间:2014-01-04 12:42:00

标签: c++ visual-studio-2010

我是c ++新手,

我应该编写什么代码才能使屏幕静止不动。我用

getche();

用c语言编写。但不是getche()我应该在c ++中使用什么; 我试过了

std::cin.get();

但控制台窗口会显示然后快速关闭。

4 个答案:

答案 0 :(得分:3)

  

控制台窗口显示然后快速关闭。

您的缓冲区中似乎有一些内容,而cin.get正在将其作为一个字符读取。例如:

int i = 0;
std::cin >> i;
std::cin.get();

当您输入数字并按Enter键时,cin >> i将使用该数字,但它将在缓冲区中保留\n字符(来自Enter键击),{{1}将读取该字符。无需等待用户输入新数据。

为了使这个例子表现得像我们想要的那样,我们需要在调用std::cin.get()之前清空缓冲区:

std::cin.get()

int i = 0; std::cin >> i; std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); std::cin.get(); std::numeric_limits头文件中定义。

答案 1 :(得分:0)

在Windows中,我通常使用system("pause");来调用操作系统的pause命令,以防止在程序终止后关闭控制台窗口。此命令显示一条很好的消息并等待任何密钥:)。

  

按任意键继续。 。

我不知道该命令是否存在于其他操作系统中,也不知道它是否是您要存档的内容:)。

该功能位于cstdlibstdlib.h头文件

最后但同样重要的是,在最后一行代码中调用getch()以防止控制台被关闭并不是一个好主意。但如果你真的喜欢这种方式,我建议使用像

这样的东西
std::string temp;
std::cin>>temp;

在主函数的末尾,就在return语句之前。

答案 2 :(得分:0)

只需加入<stdlib.h>,在主要方法中使用system("pause")您的控制台窗口将保持不变。

答案 3 :(得分:-1)

请使用以下
 的getch()