Stl String 分割字符串的一種簡潔方法

#include <sstream>
#include <iostream>
#include <string>
#include <vector>
#include <iterator>

using namespace std;


int main(int argc, char **argv)
{
    string s("hello world bye");
vector<string> vect;
vector<string>::const_iterator vectIter;
stringstream ss;
ss.clear();
ss.str(s);
    vect.assign(
        istream_iterator<string>(ss),
        istream_iterator<string>()
    );
vectIter = vect.cbegin();

while (vectIter != vect.cend())
{
cout << *(vectIter++) << endl;
}

    return 0;
}


gcc編譯時報錯:

error: ‘class std::vector<std::__cxx11::basic_string<char> >’ has no member named ‘cbegin’

error: ‘class std::vector<std::__cxx11::basic_string<char> >’ has no member named ‘cend’

原因大概是C++11才支持cbegin和cend,makefile中添加CPPFLAGS := -g -O -Wall -std=c++11,編譯通過。


結果輸出空格分割後的字符:

hello
world
bye

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章