1

私は現在、2つのintを読み取り、それらを出力するwhileループで構成される単純なプログラムを実行しています。私の質問は、ユーザーが文字「|」を入力したときにプログラムを終了するにはどうすればよいですか?これがこの小さな超シンプルなプログラムです:

int main()
{
    int var1 = 0;
    int var2 = 0;

    while(cin>>var1>>var2)
    {
        cout << var1 << " " << var2 << endl;
    }

    return 0;
}

getlineの引数を定義して、私がやりたいことを正確に実行できることは知っていますが、これをwhileループで実装する方法がわかりません。助けてくれてありがとう。

4

3 に答える 3

4

誰かがistreamが整数に<<できないものを入力するとすぐに、ループはすでに終了します。とにかく|で具体的に終了するには、次のようにpeek関数を使用します。

int main()
{    
  int var1 = 0;    
  int var2 = 0;
  while( cin.good() )
  {
    char c;
    c = cin.peek();

    if( c == | )
      break;
    else
    {
      cin >> var1 >> var2;
      cout << var1 << " " << var2 << endl;
    }
  }

  return 0;
}

cスタイルの入力や複雑な行の解析の使用を回避します。

于 2011-04-30T23:26:35.837 に答える
0

入力された値が|であったかどうかを確認するだけです。if-blockで、breakキーワードを使用してループを停止します。

このような行の何か:

#include <stdio.h>
int main() {
    char c;
    for(;;) {
        printf( "\nPress any key, Q to quit: " );

        // Convert to character value
        scanf("%c", &c);
        if (c == 'Q')
            break;
    }
 } // Loop exits only when 'Q' is pressed
于 2011-04-30T23:18:33.097 に答える
0

記述されているように、ユーザーがを入力すると、ループを終了します|intまたは、 (先頭の空白をスキップした後)として解釈できないその他のもの。

より正確な制御が必要な場合は、行ごとに読み取る(そして行を解析する)か、文字ごとに読み取る(そして値を積み上げる)必要があります。

于 2011-04-30T23:19:00.857 に答える