由于stl中的string类,没有split成员函数,所以需要自己实现它。
有两种方法,当你的delimiter是空白符的时候,可以用这个不推荐的取巧方法。
string sentence = "And I feel fine...";
istringstream iss(sentence);
copy(istream_iterator<string>(iss),
istream_iterator<string>(),
ostream_iterator<string>(cout, "\n"));
这个方法是利用了,存在stringstream里的string会自动以空白分割。
更加准确且稳定的split方法是这样的:
vector<string> &split(const string &s, char delim, vector<string> &elems) {
stringstream ss(s);
string item;
while (getline(ss, item, delim)) {
elems.push_back(item);
}
return elems;
}
关于std::getline
:
template< class CharT, class Traits, class Allocator >
std::basic_istream<CharT,Traits>& getline( std::basic_istream<CharT,Traits>&& input,
std::basic_string<CharT,Traits,Allocator>& str,
CharT delim );
Parameters
input - the stream to get data from
str - the string to put the data into
delim - the delimiter character
Return value
input