2012-04-28 5 views
1

私は文字列を取得して、すべての単語をそれ自身の変数に書きたいので、if節などで使用できます。文字列のすべての単語を異なる変数に書き込む方法は?

私が試した:

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

しかし、4つの単語が入力されている場合は、この唯一の作品を。ユーザーが入力する1,2,3,4以上の単語かどうかわからないので、単語を数える方法が必要です。

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

getline(cin, string1); 

その後の言葉にそれをカット。 申し訳ありませんが、私は多くを検索しましたが、私は方法を見つけることができません。

私はまた、変数にcinbufferを書き込もうとしましたが、私はこれを行うことができる唯一の方法は、cinbufferで何かがある場合にのみ便利です

cin >> varx; 

です。そうでない場合、ユーザは再び入力を求められる。

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

答えて

2

に各項目をダンプするために分割するように、その後、何かを使用してgetlineの

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

を使用するように

+0

ちょうどistringstreamについて知っていますが、ありがとうございます! – mohrphium

+0

@mohrphium:問題ありません。 ''、 ''、 ''も本当に便利です。 –

0

が鳴ります。 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; 

} 
関連する問題