2016-04-22 13 views
-4

私はコードをクリーンでクロスプラットフォームにする必要があるため、システム(「一時停止」)に代わるものが必要です。 私はC++の初心者プログラマーですが、最近はどういうふうにBADシステム( "PAUSE")が読まれていますか?私はcin.get()を試しましたが、プログラムを一時停止するためにどのように使用するのか分かりませんでした。他の投稿では、ステートメントの後にブレークポイントを置くと言われていますが、私はそれをどうやって行うのか分かりません。私のプログラムを一時停止する方法に関する提案はありますか?あなたが関数だけでなくプログラムで私に例を与えることができれば、本当に役に立ちます。システムの代わりに( "PAUSE")?

EDIT:この質問はsystem("pause"); - Why is it wrong?とは異なります。なぜなら私のプログラムを一時停止するにはすばやく簡単な方法が必要で、私の質問には答えられないからです。

+1

なぜ 'cin.get()'はあなたにとってうまくいかないのですか? –

+0

['std :: istream :: get()'](http://en.cppreference.com/w/cpp/io/basic_istream/get) –

+0

'cin.get()'はあなたを一時停止するためのやり方ですとにかくプログラム。入力バッファーに文字が残っていると、それはまったく一時停止しません。バッファに文字がない場合は、Enterキーを押すと再開し、その間に入力した文字は画面に表示され、非常に専門的ではない外観のプログラムになります。あなたが自分でプログラムを作っているのであればうれしいです。しかし、そのような場合には、 'system(" pause ")'もあなたのシステム上で動作するなら、大丈夫です。 –

答えて

1

あなたが実際にWindowsで作業していると仮定すると、system("PAUSE")の最悪の事は、オペレーティングシステムのアーキテクチャに関する根本的な誤解を裏付けていることです。 のコードは、認識された問題を解決するための間違った場所であるため、のコードをsystem("PAUSE")に置き換える必要はありません。そうでない場合はとすぐにプログラムが終了するようを「ウィンドウが消える」ため

初心者は、プログラムの最後にstd::cin.get()ようsystem("PAUSE")、あるいはポータブル代替を置くのが好き。しかし、そのような論理には深刻な欠陥があります。プログラムが実行されている間にあなたが見ているウィンドウは、プログラムが実行されている環境のの部分ですが、ではなく、プログラム自体の一部ですです。

しかし、一般的なコンソールプログラムでは、実行される環境の詳細を想定してはいけません。代わりに、std::coutstd::cinを使って入力と出力について考えると、より抽象的な考え方をする必要があります。あなたのプログラムは人間のユーザにとっても見えると誰が言いますか?あなたはファイルを読み書きすることができます。パイプを使うことができます。テキストをネットワークソケットに送ることができます。あなたは知らない。

#include <iostream> 

int main() 
{ 
    std::cout << "Hello world\n"; // writes to screen, file, network socket... 
} 

グラフィカルウィンドウを開くと、画面上のテキスト出力を表示するには、あなたのプログラムの範囲ではありませんが、まだsystem("PAUSE")を使用すると、正確に1つのユースケースを想定し、他のすべてを壊します。

Visual StudioのようなIDEを使用していて、すべての出力を見る前にF5キーを押すと最終的にウィンドウが消えることに悩まされる場合は、プログラム自体を操作するよりも3つの選択肢があります。

  • Demystification。 * .exeファイルを作成するために、Visual Studioが実際に行っていることは、Visual C++コンパイラをバックグラウンドで呼び出していることに注意してください。 cmdまたはで自分のコンソールウィンドウを開きます。ツール> Visual Studioコマンドプロンプト、その* .exeファイルのディレクトリを見つけて実行します(Visual Studioのヘルプなしでコンパイラを起動する方法も学ぶ必要があります。あなたはC++のビルドプロセスについて深く理解しています)。
  • CTRL + F5を押します。
  • コードの最後にブレークポイントを配置します。方法がわからない場合は、documentationをお読みください。
+0

このように感じている人を見つけるために、リフレッシュしてください。私たちがどれほど珍しいかは衝撃的です。 : –

0

私は一歩近づいて、cin。無視しますが、ユーザーは続行したい場合にのみEnterキーを押すことができます。 cin.ignoreと 例():

#include <iostream> 
int main() 
{ 
    cout << "Press enter to continue!\n"; 
    cin.ignore(); 
    //do something 
    return 0; 
} 

あなたはそれが進み、あなたはそれがやりたいものは何でもありませんEnterキーを押すと。

+0

プログラムが 'program.exe> file.txt'として起動された場合、何が起きますか? –

+0

@ChristianHacklプログラムがテキストファイルで作成されている場合は、しかし、C++でファイルをコンパイルするために他のコマンドを実行しなければならないかもしれません。 –

+0

プログラムがテキストファイルに書き込むのではないでしょうか? –

関連する問題