2012-04-28 2 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

답변

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; 

} 
관련 문제