I’m using the boost::split method to split a string as this:
I first make sure to include the correct header to have access to boost::split:
#include <boost/algorithm/string.hpp>
then:
vector<string> strs;
boost::split(strs,line,boost::is_any_of("\t"));
and the line is like
"test test2 test3"
This is how I consume the result string vector:
void printstrs(vector<string> strs)
{
for(vector<string>::iterator it = strs.begin();it!=strs.end();++it)
{
cout << *it << "-------";
}
cout << endl;
}
But why in the result strs I only get "test2" and "test3", shouldn’t be "test", "test2" and "test3", there are \t (tab) in the string.
Updated Apr 24th, 2011: It seemed after I changed one line of code at printstrs I can see the first string. I changed
cout << *it << "-------";
to
cout << *it << endl;
And it seemed "-------" covered the first string somehow.
The problem is somewhere else in your code, because this works:
and testing your approach, which uses a vector iterator also works:
Again, your problem is somewhere else. Maybe what you think is a
\tcharacter on the string, isn’t. I would fill the code with debugs, starting by monitoring the insertions on the vector to make sure everything is being inserted the way its supposed to be.Output: