0

私は C++ を使い始めたばかりで、いくつかの練習問題でよくわからない問題に遭遇しました。次の形式でコンソールから行を読み取ることができる必要があります。

N A B C... etc.

ここで、N は数値であり、次の入力は、N の値に基づいてさまざまな種類とさまざまな量になります。

私のアプローチは、N を読み取り、N が何であるかに基づいてさまざまな入力を求めることです。しかし、私はすべての入力を 1 行で受け入れなければならず、単一のスペース文字の後に終了する入力形式を取得できませんでした。とにかく、単一の数字とスペース文字を受け取った後、次のステートメントに進むことができますか? または、この問題を解決するためのより良い方法はありますか? よろしくお願いします。

編集:

わかりましたが、完全には理解できていないので、istringstream を調べる必要があります。これが私が持っているものです。

vector<string> words;

string token, text;
getline(cin, text);

istringstream iss(text);

while ( getline(iss, token, ' ') ) {

    words.push_back(token);

}

これは良い方法ですか、それとも別のアプローチを取るべきですか? 誰かができるなら、これらのセリフを説明してもらえますか?

while ( getline(iss, token, ' ') )

トークンを前のすべての文字で埋めながら、スペースに到達するとtrueを返すと思いますか?

そして、これは私を混乱させます。

getline(cin, text);
4

2 に答える 2

3

数値型でも文字列型でも、式は最初cin >> nのスペースで停止します。または同様のフォーマットシーケンスの後にスペースがある限り、同じことができると思いnます。scanf%d

于 2011-02-26T22:31:17.893 に答える
1

(要求に応じて) 行全体を一度に読み取り、N に応じて、コードは残りの入力をチェックして、適切にフォーマットされていることを確認するか、エラーを出力する必要があります。

于 2011-02-26T22:32:58.273 に答える