我正在尝试使用头文件 <iostream.h>
保持输出屏幕,但是我不知道在 <iostream.h>
或其他C++库中是否有与 <conio.h>
中的 getch()
和 clrscr()
函数等效的函数。 是否存在这样的函数?
conio.h
函数是编译器对语言的扩展,不是 C 或 C++ 的一部分。标准 C++ 中没有相应的直接替换方法。getch()
,可能最接近的等效方法是 int ch = std::cin.get();
。但请注意,这将从缓冲的标准输入读取,而我认为 conio.h 的 getch
是无缓冲读取。clrscr()
的实现都会非常依赖于平台——并非所有屏幕或终端都有清除概念,并且那些具有清除功能的方式各不相同。getch()和clrscr()可以在C++中使用,需要包含conio.h头文件。
但是,如果由于某些原因无法包含conio.h头文件,
那么可以尝试使用cin>>dummy_var命令,并显示提示信息要求用户按回车键。
只需使用这两个函数:
fflush(stdin);
getchar();
Visual Studio和Dev C++在它们的头文件中包含了这个,所以不需要包含额外的头文件。
这是我通常使用的:
#include<iostream>
...
std::getchar();
我知道这是一个老问题,但我仍然会回答,因为人们可能正在寻找类似问题的答案。
conio.h
是一个(古老的)Windows和MS-DOS/PC-DOS C库,被用于在Windows/DOS环境下进行非常基本的、裸机的键盘输入和处理。
getch()
和 clrscr()
都是该头文件的非标准添加项,应尽可能避免使用标准C函数。在C中,getch()
通常可以用scanf()
、fread()
替换,在C++中可以用std::cin
和std::cin.get
替换。至于clrscr()
,你可以得到最接近的替代方式:
for(int i = 0; i < 100; i++)
{
printf("\n");
}
或者:
*nix环境下也有ncurses.h
。 这里是一些相关信息的链接。
getch()
来自conio.h,具有两个特殊功能:
回显是由C/C++环境外的终端完成的。它只能通过操作终端进行控制。另外,使用iostream.h头文件几乎不可能获得无缓冲I/O。
因此,仅使用iostream.h根本不可能接近getch()
。
(有很多getch()
实现,例如使用termios.h禁用回显.)
对于 clrscr()
,我通常使用
system("cls"); //Windows
system("clear"); // Linux
对于 getch()
函数,我同意 @iKlsR
的看法,只需使用 cin.get() 两次即可。
{ ...
std::cin.get();
std::cin.get();
}
如果您想要暂停系统一段时间,可以使用以下代码:
system("sleep 5s"); //for linux
system("x")
在终端中运行命令x
。因此,您可以通过使用替换x
的不同函数来利用它。(具体使用与您的发行版或操作系统相关的命令)
#include <iostream>
,而不是#include <iostream.h>
。 - GManNickG<iostream>
可能是标准的,但clrscr()
并不是标准的,所以在非标准的头文件中找到它其实是有道理的。 - MSalters