3

ユーザーから文字列を読み取り、それを使用してリクエストを処理するプログラムを作成しています。プロンプトを発行した後、次のいずれかの形式で 3 つの可能な応答のいずれかを期待できます。

  1. 文字列文字列
  2. 文字列整数
  3. ストリング

ユーザーが与えるコマンドのタイプに応じて、プログラムは異なるタスクを実行します。ユーザー入力の処理に苦労しています。明確にするために、ユーザーはコマンドを単一の文字列として入力するため、オプション 2 を実行するユーザーの例では、プロンプトの後に「age 8」と入力する場合があります。この例では、プログラムに「年齢」を文字列として、「8」を整数として保存させたいと考えています。これについての良い方法は何でしょうか?

ここで集めたものから、 strtok() または boost を使用することが解決策になる可能性があります。私は成功せずに両方を試しましたが、誰かが物事をより明確にするのを助けることができれば非常に役に立ちます. 前もって感謝します

4

1 に答える 1

6

で 1 行の入力を取得した後std::getline、 を使用しstd::istringstreamてテキストを再利用し、さらに処理することができます。

// get exactly one line of input
std::string input_line;
getline( std::cin, input_line );

// go back and see what input was
std::istringstream parse_input( input_line );

std::string op_token;
parse_input >> op_token;

if ( op_token == "age" ) {
    // conditionally extract and handle the individual pieces
    int age;
    parse_input >> age;
}
于 2012-04-17T15:26:13.510 に答える