0%

c++实现split(通过getline)

众所周知
c++中 string 没有自带的 split 函数(亏你还是老大哥)
网上关于 split 函数的优秀写法很多
本人不再赘述
近几日翻 C++API 时发现了 getline 一个有趣的方法

1
istream& getline (istream& is, string& str, char delim);

第一个参数是一个输入流,第二个参数是一个对字符串的常引用,第三个参数是分割符
在读入时遇到分割符则停止
可以用这个来实现单分割符的 split 功能

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
#include <sstream>
using namespace std;

int main() {
stringstream input("45,65,45231,4646,4564");
string str;
while (getline(input, str, ',')) {
cout << str << endl;
}
return 0;
}

简单方便快速。