2012-04-28 28 views
1

我想要得到一串字符串並將每個單詞寫入它自己的變量,以便我可以在if子句中使用它們。如何將一個字符串的所有單詞寫入不同的變量?

我想:

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

但是這隻能如果輸入4個字。我需要一種計算單詞的方法,因爲我不知道用戶輸入的是否是1,2,3,4或更多的單詞。

也許有與得到整個字符串的方式:

getline(cin, string1); 

它切成後話。 對不起,我搜索了很多,但我找不到方法。

我也試圖在cinbuffer寫入一個變量,但我可以做到這一點的唯一方法是使用

cin >> varx; 

這是唯一有用的,如果有什麼東西在cinbuffer。否則,用戶會被要求再次輸入。

編輯:剛發現這個,適合我。不管怎麼說,還是要謝謝你! C++ cin whitespace question

回答

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; 

} 
+0

剛剛發現了istringstream,但謝謝! – mohrphium 2012-04-28 18:01:24

+0

@mohrphium:沒問題。 '',''和''也是非常有用的。 – 2012-04-28 18:02:58

0

將事情寫入像這樣的不同變量通常是錯誤的答案。好像你想要一個像array的東西。

相關問題