estoy usando el método boost::split
para dividir una cadena como esta divisiónC++ Boost cadena
vector<string> strs;
boost::split(strs,line,boost::is_any_of("\t"));
y la línea es como
"test test2 test3"
Esta es la forma en que consumo el vector de cadena de resultado:
void printstrs(vector<string> strs)
{
for(vector<string>::iterator it = strs.begin();it!=strs.end();++it)
{
cout << *it << "-------";
}
cout << endl;
}
Pero por qué en el resultado strs
solo me dan "test2"
y "test3"
, no deben ser "test"
, "test2"
y "test3"
, hay \t
(pestaña) en la cuerda.
Actualizado el 24/04/2011: Parece que después de haber cambiado una línea de código en printstrs
puedo ver la primera cadena. He cambiado
cout << *it << "-------";
a
cout << *it << endl;
y parecía "-------"
cubierto la primera cadena de alguna manera.
Muestra cómo trabajas con el vector.Supongo que el problema está ahí. –
'boost :: is_any_of (" \ t ")' es menos eficiente que '[] (char c) {return c == '\ t';}'. Solo quieres verificar una sola posibilidad. (No tengo idea de por qué no hay 'impulso: es ('\ t')') – MSalters
¿Qué significa el código en @MSalters comentar? ¿Cómo uso ese código para sustituir 'boost :: is_any_of()'? –