众所周知,java对于string的split函数非常好用,
但是C++标准库函数中并没有对于此函数的用法,以下是三种手动实现split()的方法:
共有三种方法:
1. 第一种
(废话),
最快的一种方法,不额外遍历string来产生一个函数,
直接边遍历,边分割,边做题。
2. 第二种
愚笨的手写方法:
vector<string> split(string str){
int start=0, end=0, size=str.size();
vector<string> result;
for (end=0; end<size; ++end) {
if (str[end]==' ') {
if (end>start) { // Avoid the multi-' ' situation
string newStr=str.substr(start,end-start);
result.push_back(newStr);
}
start=end+1;
}
}
if (end>start) {
string newStr=str.substr(start,end-start);
result.push_back(newStr);
}
return result;
}
3. 第三种:
聪明的手写方法:
vector<string> split(string str){
stringstream ss;
ss<<str;
string words;
vector<string> result;
while (ss>>words) {
result.push_back(words);
}
return result;
}