2017-07-19 364 views
1

即時嘗試獲取用戶輸入:「aa bb cc dd ee」等存儲在單個字符串中並將其放入多個字符串中string_1「aa」,string_2 「BB」,STRING_3 「CC」,STRING_4 「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; 

會做你想要達到的目標。


如果你真的需要有存儲到一個字符串1的輸入,你應該使用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 
    } 
} 

這樣的事情。

相關問題