検索

ホームページ  >  に質問  >  本文

c++ - window如何判断cin输入流的结束?

大家讲道理大家讲道理2805日前652

全員に返信(2)返信します

  • ringa_lee

    ringa_lee2017-04-17 14:25:19

    1. Ctrl Z が単独の行にある場合、またはその前に文字 (スペースを含む) がない場合、それは意味のない文字として認識されます。 Windows での定義はプログラムとは何の関係もありません。

    2.endl は更新ストリームです。 cin はエラーが発生したときに飛び出す while ループであるため、cin.clear() でステータス ビットをリフレッシュすることなく入力を再入力する方法はありません。 2 番目のプログラムは、データがまだストリーム内にあるためではなく、最初の while の実行後に入力データがグローバル オブジェクト p2 に保存されるため、最初に入力された文字を出力します。これは、リセット状態がないためです。 、プログラムを直接実行します 2 番目の while ループはスキップされ、p2 の内容が直接出力されます

    解決策: 2 つの while ループの間に cin.clear() と cin.sync() を追加します (新しい行で ctrl z を入力したくない場合は、cin.ignore() を追加することもできます)

    返事
    0
  • 大家讲道理

    大家讲道理2017-04-17 14:25:19

    • linxu: Ctrl D から EOF

    • までを設定します
    • ウィンドウは Ctrl Z から EOF

    • まで設定できます

    cin.clear()

    をコードに追加します リーリー

    EOF の入力

    • Linux では、新しい行の先頭で Ctrl-D を押すと EOF を意味します (行の途中で Ctrl-D を押すと、「標準入力」バッファ領域を出力することになるため、これはCtrl D を 2 回押す必要があります);

    • Windows では、
    • は EOF を意味します。 (ちなみに、Linux で Ctrl-Z を押すと、プロセスが中断され、バックグラウンドで一時停止されます。fg コマンドを使用すると、フォアグラウンドに戻すことができます。Ctrl-C を押すと、プロセスが終了します。)

      Ctrl-Z

    • では、本当に Ctrl-D を入力したい場合はどうすればよいでしょうか?このとき、最初に Ctrl-V を押してから、Ctrl-D を押す必要があります。システムはこれを EOF 信号とは認識しません。 Ctrl-V は、次の入力を「文字通り」解釈することを意味します。Ctrl-V を「文字通り」入力したい場合は、続けて 2 回入力するだけです。

    ルアン先生から引用された EOF とは何ですか?

    返事
    0
  • キャンセル返事