2012-05-11 14 views
5

Ho scritto questo codice per dividere una stringa contenente parole con molti spazi e/o tabulazioni in un vettore stringa contenente solo le parole.boost split split per eliminare gli spazi nelle parole

1 #include<iostream>                
2 #include<vector>                 
3 #include<boost/algorithm/string/split.hpp>          
4 #include<boost/algorithm/string.hpp>            
5 int main()                  
6 {                    
7  using namespace std;               
8                     
9  string str("cONtainS   SoMe CApiTaL WORDS");      
10                     
11  vector<string> strVec;              
12  using boost::is_any_of;              
13                     
14  boost::algorithm::split(strVec, str, is_any_of("\t "));            
15                     
16  vector<string>::iterator i ;             
17                     
18  for(i = strVec.begin() ; i != strVec.end(); i++)        
19   cout<<*i<<endl;               
20                     
21  return 0;                 
22 }                    
23  

mi aspettavo un'uscita

cONtainS 
SoMe 
CApiTaL 
WORDS 

ma im geting uscita con lo spazio come un elemento della strVec cioè

cONtainS 











SoMe 



CApiTaL 
WORDS 

risposta

31

È necessario aggiungere un parametro finale con il valore boost::token_compress_on , come da documentation:

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