c++ boost split string

后端 未结 2 1360
予麋鹿
予麋鹿 2020-12-13 03:51

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

2条回答
  •  遥遥无期
    2020-12-13 04:09

    The problem is somewhere else in your code, because this works:

    string line("test\ttest2\ttest3");
    vector strs;
    boost::split(strs,line,boost::is_any_of("\t"));
    
    cout << "* size of the vector: " << strs.size() << endl;    
    for (size_t i = 0; i < strs.size(); i++)
        cout << strs[i] << endl;
    

    and testing your approach, which uses a vector iterator also works:

    string line("test\ttest2\ttest3");
    vector strs;
    boost::split(strs,line,boost::is_any_of("\t"));
    
    cout << "* size of the vector: " << strs.size() << endl;
    for (vector::iterator it = strs.begin(); it != strs.end(); ++it)
    {
        cout << *it << endl;
    }
    

    Again, your problem is somewhere else. Maybe what you think is a \t character 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:

    * size of the vector: 3
    test
    test2
    test3
    

提交回复
热议问题