2014-09-12 62 views
3

我需要根據自定義分隔符剪切字符串流。目前的代碼只是根據幾個標準分隔符來裁減。如何定義和剪切stringstream根據自定義分隔符字符串行?Tokenize stringstream

std::istringstream input; 
input.str("1\n2\n3\n4\n5\n6\n7\n"); 
int sum = 0; 
for (std::string line; std::getline(input, line);) 
    { 
    cout<<line; 
    } 

回答

3

如果你有一個分隔符,你想使用它的單個字符,你可以把它傳遞給std::getline() 3參數過載:

std::istringstream input; 
input.str("1;2;3;4;5;6;7;"); 
int sum = 0; 
for (std::string field; std::getline(input, field, ';');) 
    { 
    std::cout<<field; 
    } 

Live example

對於其他情況(多字符分隔符,多個分隔符),您可能需要考慮使用Boost.Tokenizer

2

使用重載std::getline

for (std::string line; std::getline(input, line, delimiter);) 
{ 
    std::cout<< line <<'\n'; 
} 
的第三個參數