C++中如何实现split的效果?

和Python等语言不同,C++的string类没有内置split函数,这对于实际应用中要经常分割字符串的情况非常不方便。有很多种方法来处理,这里讲一种比较方(tou)便(lan)的方法——使用字符串流的方式吧:

先上示例代码,这里是要读取一个存放在E盘根目录的一个csv文件(以逗号隔开的文本文件):

#include <iostream>
#include<sstream>
#include <fstream>
#include<vector>
#include<string>
using namespace std;
int main()
{
ifstream in("E://packageProblem.csv");
string line;
while(getline(in,line)){
cout<<"原始数据为:"<<line<<endl;
istringstream sin(line);//实例化一个字符串流对象并读入line字符串,除了这种方式,还可以用sin.str(line)的方式写入。当然,多次使用同一个流是需要clear的。
vector<string>fields;//承接分割后的字符串
string field;
while(getline(sin,field,',')){//将字符串流sin中的字符读入到field字符串中,以逗号为分隔符
fields.push_back(field);
cout<<field<<endl;
}
}
cout<<endl;
}

文件中原本是:

10,
3,4
4,5
5,6

输出为:

原始数据为:10,
10
原始数据为:3,4
3
4
原始数据为:4,5
4
5
原始数据为:5,6
5
6

当然这只是一种方法,实际上如果我们使用了vector的话,直接一个字符一个字符地遍历、到逗号处断开也可以,这里只是方法之一。

最新文章

  1. 瘋子C语言笔记(指针篇)
  2. Knockoutjs 实践入门 (1) 属性绑定
  3. [.net 面向对象编程基础] (19) LINQ基础
  4. 【position也可以很复杂】当弹出层遇上了鼠标定位(下)
  5. DevExpress组件之——PopupMenu组件(转)
  6. Android手机tcpdump抓包
  7. HDU 1429 胜利大逃亡(续)(三维BFS)
  8. hadoop2.2编程: 重写comparactor
  9. HTML5 Canvas鼠标与键盘事件
  10. MeshCollider双面化脚本
  11. kafka可视化客户端工具(Kafka Tool)的基本使用
  12. 浅谈js的数字格式
  13. python---RabbitMQ(2)exchange中订阅者模式fanout&lt;广播&gt;,(一对多,发布一条消息,多人同时接收)
  14. [POI2011]Inspekcja
  15. javascript es6 箭头函数
  16. 20165305 苏振龙《Java程序设计》第八周课上测试补做
  17. ASP入门(十四)-FileSystemObject 对象
  18. anroid学习目录总结
  19. 高级C#信使(译) - Unity维基百科
  20. 【Linux】Linux基本命令扫盲【转】

热门文章

  1. Spring boot之JPA/Hibernate/Spring Data
  2. Java并发编程的艺术笔记(八)——线程池
  3. C++入门经典-例3.5-判断某一年是否是闰年之嵌套判断
  4. dubbo源码阅读笔记-如何引用远程服务,变成invoker
  5. SparseArray II
  6. RF快捷键
  7. Uep弹窗showModalDialog的使用
  8. linux如何查看目录或文件夹的总大小--du命令
  9. Activity的onSaveinstaceState()保存fragment状态
  10. emqtt 系统主题