system( "pause")を使用すると、「続行するには任意のキーを押してください...」という行が画面に表示されます。
これは苛立たしく、出力の読み取りを非常に面倒にします。
これが来るのを防ぐ方法はありますか?
続行するには任意のキーを押したいが、画面に「続行するには任意のキーを押してください」を表示したくないということですか?これを試してみてください。これgetchar();
により、キーボードから入力する1文字がキャプチャされ、続行されます。
プラットフォームに依存するのではなく、プラットフォームに依存せずに使用system("pause")
できますstd::cin.get()
。バッファがそれを混乱させている場合は、次を使用できます。
std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n')
バッファをクリアする前に。
Windowsを使用していると仮定して、system("pause")
をに置き換えますsystem("pause > NULL")
。
まず、危険ですので絶対に使用しないでください。system("pause")
コードは理由もなく外部システム プロシージャを呼び出します。クラッカーは、「一時停止」コマンドを他のコマンドに置き換える方法を見つけて、あなたのプログラムにあなたのユーザー権限で他のプログラムを呼び出させることができます.
つまり、メッセージがデバイスに送信されるのを避けることができますnull
。
Windows の場合:
一時停止 > ヌル
そして、この恐ろしいシステムコールを移植可能にするために大胆になりたい場合は、次を使用できます。
Linux の場合:
echo Press any key to continue ...; ×を読む
これで、ORとAND (論理結合子) を両方に適用して、両方のシステムで機能するシステム コールを作成できます。
void pause(void)
{
system("echo Press any key to continue . . . && ( read x 2> nul; rm nul || pause > nul )");
return;
}
Linux はこのキーワードを認識しないため、「nul」という一時ファイルを作成します。Linux の null デバイスは/dev/null
、 だけでなく、 ですnul
。その後、コマンドはこの一時ファイルをrm nul
. そのため、たまたまnul
同じディレクトリに名前の付いたファイルがある場合は、このコマンドは役に立たないことに注意してください (さらに別の理由により)。
このコマンドはオリジナルを模倣しています。メッセージを避けたい場合は、メッセージのecho Pres...
一部を削除してください。
ボーナス:
system
?を使用して端末画面をポータブルにクリアします。(いいえ、同じ理由でこれをしないでください。危険です。)しかし、テスト目的で、次を使用できます。system("cls||clear");
避けてくださいpause
。C は言語であり、存在する最も強力な言語の 1 つです。pause
Cのみを使用してaを作成する方法があると確信しています(getchar()
またはscanf()
たとえば)。
その行はの一部ですsystem("pause")
。getline(std::cin, variable)
またはなどの別の方法を試すことができますcin.get()
。