我正在尝试使用标题文件<iostream.h>
在我的输出上保留屏幕,但我不知道getch()
&amp;的任何等效功能。 clrscr()
中<conio.h>
的{{1}}函数或任何其他C ++库。有没有这样的功能?
答案 0 :(得分:28)
conio.h
函数是该语言的编译器扩展,而不是C或C ++的一部分。标准C ++没有直接的替代品。
对于getch(),int ch = std::cin.get();
可能是最接近的等价物 - 但请记住,这将从缓冲的标准输入读取,而我认为conio.h getch
执行无缓冲读取。
clrscr()
的任何实现都将非常依赖于平台 - 并非所有屏幕或终端都有清除概念,而且那些具有完全不同的方式来访问该功能。
如果您需要将终端视为一组字符流以外的其他内容,最好的办法是寻找一个隐藏底层终端,屏幕或控制台详细信息的库。如果您使用的是UNIXish系统,请查看curses或ncurses库;我不知道对其他操作系统的任何建议。
答案 1 :(得分:7)
getch()和clrscr()将与C ++一起使用。包括conio.h
但是,如果你不能(出于某种原因)包括conio.h,
cin&gt;&gt; dummy_var如何显示要求用户按回车的显示消息?
答案 2 :(得分:6)
只需使用cin.get();
答案 3 :(得分:4)
只需使用这两个功能:
fflush(stdin);
getchar();
Visual Studio和Dev C ++在其iostream
标头中包含此内容,因此无需包含额外的头文件。
答案 4 :(得分:3)
这是我通常使用的:
#include<iostream>
...
std::getchar();
答案 5 :(得分:2)
迟到的答案,您可以使用std::cin.get()
,这应该适用于大多数编译器。如果这不起作用,请尝试添加另一个。
int main () {
// ...
std::cin.get();
std::cin.get();
return 0x00;
}
使用system("PAUSE")
仅适用于Windows,并且是bad编程habit。这样做的原因是它只是暂停或冻结您的程序,而不是等待输入。即。按键退出。
答案 6 :(得分:1)
我知道这是一个老问题,但我会回答,因为人们可能正在寻找类似问题的答案。
conio.h
是一个(古老的)Windows和MS-DOS / PC-DOS C库,它仍然用于在Windows / DOS环境中进行非常基本的裸机键盘输入和处理。< / p>
getch()
和clrscr()
都是此标头的非标准添加,应尽可能避免使用标准C函数。 getch()
通常可以替换为C中的scanf()
,fread()
和C ++中的std::cin
和std::cin.get
。至于clrscr()
,你可以得到的最接近的是:
for(int i = 0; i < 100; i++)
{
printf("\n");
}
或强>
* nix环境中也有ncurses.h
个。 Here's a link了解相关信息。
答案 7 :(得分:1)
对于auto x= A("E")._s
,我通常使用
clrscr()
对于 system("cls"); //Windows
system("clear"); // Linux
函数,我同意 getch()
,只需使用 cin.get() 2 次。
@iKlsR
如果您想暂停系统片刻或特定时间间隔,请使用:
{ ...
std::cin.get();
std::cin.get();
}
基本上函数 system("sleep 5s"); //for linux
在终端中运行命令 system("x")
。所以你可以通过使用不同的函数代替 x
来利用它。 (具体使用与您的发行版或操作系统相关的命令)
答案 8 :(得分:0)
conio.h中的特定于平台的功能getch()
具有两个特殊功能:
回声由C / C ++环境外部的终端完成。只能通过操作终端进行控制。另外,使用iostream.h标头获得无缓冲的I / O几乎是不可能的。
因此,单独使用iostream.h不可能到达getch()
附近。
(周围有许多getch()
实现,例如使用termios.h禁用回显。)
答案 9 :(得分:-5)
您可以使用系统(“暂停”),它会产生“按任意键继续”消息。但它只适用于Windows环境。我认为所有“系统”命令都是dos命令。如果我错了,请纠正我
答案 10 :(得分:-23)
如果你在Windows上工作,你可以使用系统(“暂停”),这将给你“按任意键继续”消息。