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