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

时间:2009-09-04 05:40:36

标签: c++ iostream

我正在尝试使用标题文件<iostream.h>在我的输出上保留屏幕,但我不知道getch()&amp;的任何等效功能。 clrscr()<conio.h>的{​​{1}}函数或任何其他C ++库。有没有这样的功能?

11 个答案:

答案 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::cinstd::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上工作,你可以使用系统(“暂停”),这将给你“按任意键继续”消息。