あなたが実際にWindowsで作業していると仮定すると、system("PAUSE")
の最悪の事は、オペレーティングシステムのアーキテクチャに関する根本的な誤解を裏付けていることです。 のコードは、認識された問題を解決するための間違った場所であるため、のコードをsystem("PAUSE")
に置き換える必要はありません。そうでない場合はとすぐにプログラムが終了するようを「ウィンドウが消える」ため
初心者は、プログラムの最後にstd::cin.get()
ようsystem("PAUSE")
、あるいはポータブル代替を置くのが好き。しかし、そのような論理には深刻な欠陥があります。プログラムが実行されている間にあなたが見ているウィンドウは、プログラムが実行されている環境のの部分ですが、ではなく、プログラム自体の一部ですです。。
しかし、一般的なコンソールプログラムでは、実行される環境の詳細を想定してはいけません。代わりに、std::cout
とstd::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をお読みください。
なぜ 'cin.get()'はあなたにとってうまくいかないのですか? –
['std :: istream :: get()'](http://en.cppreference.com/w/cpp/io/basic_istream/get) –
'cin.get()'はあなたを一時停止するためのやり方ですとにかくプログラム。入力バッファーに文字が残っていると、それはまったく一時停止しません。バッファに文字がない場合は、Enterキーを押すと再開し、その間に入力した文字は画面に表示され、非常に専門的ではない外観のプログラムになります。あなたが自分でプログラムを作っているのであればうれしいです。しかし、そのような場合には、 'system(" pause ")'もあなたのシステム上で動作するなら、大丈夫です。 –