2017-07-19 17 views
1

imはユーザー入力を取得しようとしています。「aa bb cc dd ee」などは1つの文字列に格納され、複数の文字列string_1 "aa"、string_2 "BB"、をSTRING_3 "CC"、:STRING_3 "DD"、STRING_5 "EE" などC++ユーザー入力文字列を複数の文字列に分割する方法

string str; 
cin >> str; //user input 

//code to split the string 

string str_1, str_2, str_3, str_4, str_5; 
+0

'cin >> str;'は入力の最初の単語のみを受け取ります。 – user0042

+0

https://stackoverflow.com/questions/236129/most-elegant-way-to-split-a-stringの可能な複製 – Galik

+0

'cin >> str_1 >> str_2 >> str_3 >> str_4 >> str_5を試したことがありますか? ; '? –

答えて

0

std::istream& operator>>(std::istream&, std::string)が既にあなたのためにその分割を行います。入力は空白から区切られています。

ので

std::string str_1, str_2, str_3, str_4, str_5; 
std::cin >> str_1 >> str_2 >> str_3 >> str_4 >> str_5; 

はあなたが達成したいものを行います書き込み。


あなたは本当にあなたがstd::getline()機能を使用する必要があり、単一の文字列の第一に格納された入力をする必要がある場合:

std::string str; 
std::getline(std::cin,str); 

をし、個々の値を分割するstd::istringstreamを使用します。

std::istringstream iss(str); 
iss >> str_1 >> str_2 >> str_3 >> str_4 >> str_5; 
+0

ありがとう!これは完全に動作します! – jelle66

1
#include <stringstream> 

int main() 
{ 
    std::string MasterString = "Super cali\nfragelistic \n expialadogis\n then more words\n hello world"; 
    std::stringstream iss(MasterString); 

    while(iss.good()) 
    { 
     std::string SingleLine; 
     getline(iss,SingleLine,'\n'); 
     // Process SingleLine here 
    } 
} 

このようなものです。

関連する問題