2009-09-04 28 views
17

私は、ヘッダファイル<iostream.h>を使用して、私の出力に画面を保持しようとしているが、私は<iostream.h><conio.h>getch() & clrscr()関数や他のC++ライブラリに任意の同等の機能を知りません。そのような機能はありますか?conio.hのgetch()に対するiostream.hの代わりの関数?

+5

、ヘッダは単に 'の#include '、**ない** 'の#include ' ' – GManNickG

+0

は'標準しかし 'clrscr(であってもよい)と、それが実際に意味をなすように、'、標準ではありませんそれを非標準ヘッダーで見つけることができます。 – MSalters

+0

私は実際にはいつもclrscr()でプログラムを開始し、最初はgetch()で終了する人がいるのかと疑問に思っていました。 – UncleBens

答えて

-18

Windowsで作業する場合は、システム(「一時停止」)を使用することができます。これにより、「続行するには任意のキーを押してください」というメッセージが表示されます。

+15

これはうまくいくが、それは悪い習慣である(http://www.cplusplus.com/forum/articles/11153/)。 – dwurf

+2

これはまったく使用しないでください。 – CLearner

+3

これには 'std :: cin.ignore();'もあります。 –

6

getch()およびclrscr()はC++で動作します。 conio.h

を含めるただし、(何らかの理由で)あなたができない場合は、Enterキーを押すユーザに尋ねる表示メッセージとconio.h、

方法CINについて>> dummy_varが含まれていますか?

+0

-1、conio.hはC標準の一部ではないためです。 –

+4

+1というのは、CやC++でできることは、実際には標準ではないからです。いずれの標準も完全なものではなく、標準で指定されているヘッダー以外のヘッダーも含めることができます。 – MSalters

24

conio.h関数は、CまたはC++の一部ではなく、言語のコンパイラ拡張です。標準のC++には直接の置き換えはありません。

getch()の場合、int ch = std::cin.get();はおそらく最も近いものですが、これはバッファリングされた標準入力から読み込まれることに注意してください。ただし、conio.h getchはバッファリングされていない読み込みを行います。

clrscr()の実装は、プラットフォームに非常に依存します。すべての画面や端末がクリアという概念を持っているわけではなく、その機能にアクセスする方法も大きく異なります。

端末を文字ストリームのセット以外のものとして扱う必要がある場合は、潜在的な端末、スクリーン、またはコンソールの詳細を隠すライブラリを探すのが最善の方法です。あなたがUNIXシステムにいる場合は、cursesまたはncursesライブラリを見てください。私は他のOSの提案について知らない。

5

ただcin.get()を使用してください。

-5

システム(「一時停止」)を使用すると、「続行するには任意のキーを押してください」というメッセージが表示されます。しかし、Windows環境でのみ動作します。私はすべての "システム"コマンドはdosコマンドだと思います。私は

+1

あなたは途中で正しいです。 'system()'は現在実行中のOSのコマンドプロセッサを使って ''を実行します。 [参考文献](http://www.cplusplus.com/reference/clibrary/cstdlib/system/0)。また、プラットフォーム間で移植性がないため、一般的に悪いフォームと見なされます。 – dwurf

+1

@Kokizzu: 'pause:command not found' –

3

はただ、これらの二つの機能を使用して間違っているなら、私を修正してください:

fflush(stdin); 
getchar(); 

Visual StudioとのDev C++はとてもそのiostreamヘッダに余分なヘッダーファイルをインクルードする必要がこれを含みません。

+4

http://stackoverflow.com/a/257203/183120 ' fflush(stdin) 'は未定義の動作で、Cの標準7.18.5.2/2で呼び出されています。 – legends2k

1

最新の回答では、std::cin.get()を使用できます。これはほとんどのコンパイラで使用できます。それでも問題が解決しない場合は、別のものを追加してみてください。 system("PAUSE")を使用して

int main() { 

    // ... 

    std::cin.get(); 
    std::cin.get(); 
    return 0x00; 
} 

は、Windows上でのみ使用可能で、habitをプログラミングbadです。その理由は、文字通りが一時停止します。またはは、入力を待つのではなく、プログラムをフリーズします()。すなわち、キーを押すと終了します。

#include<iostream> 
... 
std::getchar(); 
3

これは私が通常使用するものです。

conio.hは、Windows/DOS環境で非常に基本的なベアメタルキーボードの入力と処理に使用されていた(古代の)WindowsおよびMS-DOS/PC-DOS Cライブラリです。

clrscr()は、このヘッダーによる非標準的な追加であり、標準のC関数では可能な限り避けるべきです。 getch()は、通常Cでscanf(),fread(),およびstd::cin.getで置き換えることができます。 clrscr()については、あなたが得ることができる最も近いです:

for(int i = 0; i < 100; i++) 
{ 
    printf("\n"); 
} 

OR:

* nixの環境でncurses.hもあります。 Here's a linkにいくつかの情報があります。 C++で

1

私は、これは古い問題であることを理解しますが、私は人々が同様の質問への答えを探している可能性があるため、それにもかかわらずお答えするつもりです:

関連する問題