iostream.h 中 conio.h 的 getch() 的替代函数?

问题描述 投票:0回答:10

我正在尝试使用头文件

<iostream.h>
将屏幕保持在输出上,但我不知道与
getch()
中的
clrscr()
<conio.h>
函数或任何其他函数等效的函数C++ 库。有这样的功能吗?
    

c++ iostream
10个回答
31
投票
<iostream.h>

函数是该语言的编译器扩展,而不是 C 或 C++ 的一部分。标准 C++ 中没有直接替代品。


对于 getch(),

conio.h

可能是最接近的等效项 - 但请记住,这将从缓冲的标准输入中读取,而我认为 conio.h

int ch = std::cin.get();
执行无缓冲读取。

getch

的任何实现都将非常依赖于平台——并非所有屏幕或终端都有清除的概念,并且那些确实有截然不同的方式来访问该功能。


如果您需要将终端视为一组字符流以外的东西,那么最好的选择可能是寻找一个向您隐藏底层终端、屏幕或控制台详细信息的库。如果您使用的是 UNIX 系统,请查看curses 或ncurses 库;我不知道对其他操作系统有什么建议。


10
投票

但是,如果您不能(由于某种原因)包含 conio.h,

cin>>dummy_var 带有一条显示消息要求用户按 Enter 键怎么样?


8
投票


3
投票

clrscr()

Visual studio 和 Dev C++ 将其包含在其 
fflush(stdin); getchar();

标头中,因此无需包含额外的头文件。

    


3
投票

iostream



2
投票
迟到的答案

,您可以使用#include<iostream> ... std::getchar(); ,这应该适用于大多数编译器。如果这不起作用,请尝试添加另一个。


std::cin.get()

使用 
int main () { // ... std::cin.get(); std::cin.get(); return 0x00; }

只能在 Windows 上使用,并且是一种

编程习惯。这样做的原因是它实际上是“暂停”或“冻结”你的程序,而不是仅仅等待输入。 IE。按键退出。 对于system("PAUSE")我一般用

clrscr()

2
投票
对于

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 环境中非常基本的裸机键盘输入和处理。

1
投票

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 有两个特殊功能:


1
投票

无字符回显

  • 无缓冲读取字符。
  • 回显是由 C/C++ 环境之外的终端完成的。只能通过操纵终端来控制。此外,使用 iostream.h 标头几乎不可能获得无缓冲的 I/O。 因此,单独使用 iostream.h 不可能接近 getch()

(周围有很多

getch()实现,例如使用 termios.h 来禁用回显。)

    

您可以使用 system("pause"),它会生成“按任意键继续”消息。但它只适用于windows环境。我认为所有的“系统”命令都是dos命令。如果我错了请纠正我


如果您在 Windows 上工作,您可以使用系统(“暂停”),这会给您“按任意键继续”消息。

-6
投票

© www.soinside.com 2019 - 2024. All rights reserved.