#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