提升字符串拆分以消除单词中的空格

时间:2012-05-11 12:13:49

标签: c++ string boost split

我编写了这段代码,将包含许多空格和/或制表符的字符串拆分为一个只包含单词的字符串向量。

#include<iostream>       
#include<vector>                        
#include<boost/algorithm/string/split.hpp>       
#include<boost/algorithm/string.hpp>                         
int main()                              
{                  
    using namespace std;                                     

    string str("cONtainS            SoMe    CApiTaL WORDS");       

    vector<string> strVec;              
    using boost::is_any_of;       

    boost::algorithm::split(strVec, str, is_any_of("\t "));       

    vector<string>::iterator i ;       

    for(i = strVec.begin() ; i != strVec.end(); i++)       
        cout<<*i<<endl;              

    return 0;                                             
}

我期待输出

cONtainS
SoMe
CApiTaL
WORDS

但是我在输出中用空格作为strVec中的一个元素,即

cONtainS











SoMe



CApiTaL
WORDS

2 个答案:

答案 0 :(得分:35)

根据documentation,您需要添加值为boost::token_compress_on的最终参数:

boost::algorithm::split(strVec,str,is_any_of("\t "),boost::token_compress_on); 

答案 1 :(得分:4)

这是因为您的输入包含连续的分隔符。默认情况下,split将其解释为表示它们之间有空字符串。

要获得预期的输出,您需要指定可选的eCompress参数,其值为token_compress_on

http://www.boost.org/doc/libs/1_43_0/doc/html/boost/algorithm/split_id667600.html