C++如何将用户输入字符串拆分为多个字符串

问题描述:

即时尝试获取用户输入:“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://*.com/questions/236129/most-elegant-way-to-split-a-string – Galik

+0

你试过了吗?cin >> str_1 >> str_2 >> str_3 >> str_4 >> str_5 ;'? –

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

#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 
    } 
} 

这样的事情。