C++中如何实现split的效果?
和Python等语言不同,C++的string类没有内置split函数,这对于实际应用中要经常分割字符串的情况非常不方便。有很多种方法来处理,这里讲一种比较方(tou)便(lan)的方法——使用字符串流的方式吧:
先上示例代码,这里是要读取一个存放在E盘根目录的一个csv文件(以逗号隔开的文本文件):
1#include <iostream> 2#include<sstream> 3#include <fstream> 4#include<vector> 5#include<string> 6using namespace std; 7int main() 8{ 9 ifstream in("E://packageProblem.csv"); 10 string line; 11 while(getline(in,line)){ 12 cout<<"原始数据为:"<<line<<endl; 13 istringstream sin(line);//实例化一个字符串流对象并读入line字符串,除了这种方式,还可以用sin.str(line)的方式写入。当然,多次使用同一个流是需要clear的。 14 vector<string>fields;//承接分割后的字符串 15 string field; 16 while(getline(sin,field,',')){//将字符串流sin中的字符读入到field字符串中,以逗号为分隔符 17 fields.push_back(field); 18 cout<<field<<endl; 19 } 20 } 21 cout<<endl; 22}
文件中原本是:
110, 23,4 34,5 45,6
输出为:
1原始数据为:10, 210 3原始数据为:3,4 43 54 6原始数据为:4,5 74 85 9原始数据为:5,6 105 116
当然这只是一种方法,实际上如果我们使用了vector的话,直接一个字符一个字符地遍历、到逗号处断开也可以,这里只是方法之一。