我正在尝试使用头文件
<iostream.h>
将屏幕保持在输出上,但我不知道与getch()
中的clrscr()
和<conio.h>
函数或任何其他函数等效的函数C++ 库。有这样的功能吗?<iostream.h>
函数是该语言的编译器扩展,而不是 C 或 C++ 的一部分。标准 C++ 中没有直接替代品。
对于 getch(),
conio.h
可能是最接近的等效项 - 但请记住,这将从缓冲的标准输入中读取,而我认为 conio.h
int ch = std::cin.get();
执行无缓冲读取。 getch
的任何实现都将非常依赖于平台——并非所有屏幕或终端都有清除的概念,并且那些确实有截然不同的方式来访问该功能。
如果您需要将终端视为一组字符流以外的东西,那么最好的选择可能是寻找一个向您隐藏底层终端、屏幕或控制台详细信息的库。如果您使用的是 UNIX 系统,请查看curses 或ncurses 库;我不知道对其他操作系统有什么建议。
但是,如果您不能(由于某种原因)包含 conio.h,
cin>>dummy_var 带有一条显示消息要求用户按 Enter 键怎么样?
clrscr()
Visual studio 和 Dev C++ 将其包含在其
fflush(stdin);
getchar();
标头中,因此无需包含额外的头文件。
iostream
,您可以使用#include<iostream>
...
std::getchar();
,这应该适用于大多数编译器。如果这不起作用,请尝试添加另一个。
std::cin.get()
使用
int main () {
// ...
std::cin.get();
std::cin.get();
return 0x00;
}
只能在 Windows 上使用,并且是一种
坏编程习惯。这样做的原因是它实际上是“暂停”或“冻结”你的程序,而不是仅仅等待输入。 IE。按键退出。 对于
system("PAUSE")
我一般用
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
来利用它。 (具体使用与您的发行版或操作系统相关的命令)
我知道这是一个老问题,但我还是要回答,因为人们可能正在寻找类似问题的答案。
x
是一个(古老的)Windows 和 MS-DOS/PC-DOS C 库,过去和现在仍然用于 Windows/DOS 环境中非常基本的裸机键盘输入和处理。conio.h
getch()
都是此标头的非标准添加,对于标准 C 函数应尽可能避免。在 C 中,
clrscr()
通常可替换为 getch()
、
scanf()
;在 C++ 中,可替换为
fread()
和
std::cin
。至于
std::cin.get
,你能得到的最接近的是:
clrscr()
或:
在 *nix 环境中还有 for(int i = 0; i < 100; i++)
{
printf("\n");
}
。 这里有一个链接,提供了一些相关信息。
conio.h 中的平台特定函数
ncurses.h
有两个特殊功能:
无字符回显
。getch()
(周围有很多
getch()
实现,例如使用 termios.h 来禁用回显。)
您可以使用 system("pause"),它会生成“按任意键继续”消息。但它只适用于windows环境。我认为所有的“系统”命令都是dos命令。如果我错了请纠正我
如果您在 Windows 上工作,您可以使用系统(“暂停”),这会给您“按任意键继续”消息。