1

文字列の行を取得し、すべての単語を独自の変数に書き込んで、たとえばif句で使用できるようにします。

私は試した:

cin >> var1;  
cin >> var2;
cin >> var3;
cin >> var4;

ただし、これは4つの単語が入力された場合にのみ機能します。ユーザーが入力した単語が1、2、3、4以上かどうかわからないため、単語を数える方法が必要です。

たぶん、文字列全体を取得する方法があります:

getline(cin, string1);

その後、それを言葉に切ります。申し訳ありませんが、たくさん検索しましたが、方法が見つかりません。

cinbufferを変数に書き込もうとしましたが、これを行う唯一の方法は

cin >> varx;

これは、cinbufferに何かがある場合にのみ役立ちます。そうでない場合、ユーザーは再度入力を求められます。

編集:ちょうどこれを見つけた、私のために働く。とにかくありがとう! C++cin空白の質問

4

3 に答える 3

2

あなたは正しい方向に進んでいます。で行を読み取り、getline()を使用しistringstreamてその行を独自のストリームとして扱うことができます。Tたまたま使用しているタイプに合わせてこれを変更してください。

#include <algorithm>
#include <iostream>
#include <iterator>
#include <sstream>
#include <vector>

int main(int argc, char** argv) {

    using namespace std;

    vector<T> values;

    {
        string line;
        getline(cin, line);
        istringstream stream(line);

        // Read values into vector.
        copy(istream_iterator<T>(stream), istream_iterator<T>(),
            back_inserter(values));
    }

    cout << "Received " << values.size() << " values:\n";

    // Copy values to output.
    copy(values.begin(), values.end(),
        ostream_iterator<T>(cout, "\n"));

    return 0;

}
于 2012-04-28T17:59:47.387 に答える
0

このようにさまざまな変数に物事を書くことは、通常、間違った答えです。配列のようなものが必要なようです。

于 2012-04-28T17:50:41.040 に答える
0

getlineを使用しているように聞こえます

http://www.cplusplus.com/reference/string/getline/

次に、ブーストスプリットなどを使用して各アイテムを配列にダンプします

http://www.cplusplus.com/faq/sequences/strings/split/

于 2012-04-28T17:51:47.300 に答える