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的话,直接一个字符一个字符地遍历、到逗号处断开也可以,这里只是方法之一。

C++中如何实现split的效果?的更多相关文章

  1. js中slice(),splice(),split(),substring(),substr()的使用方法和区别

    1.slice(): Array和String对象都有 在Array中  slice(i,[j]) i为开始截取的索引值,负数代表从末尾算起的索引值,-1为倒数第一个元素j为结束的索引值,缺省时则获取 ...

  2. php中explode与split的区别介绍

    php中explode与split的区别介绍 作者: 字体:[增加 减小] 类型:转载 今天在使用split时遇到一些问题.还是对函数理解不深刻,特写出来做个记 首先来看下两个方法的定义: 函数原型: ...

  3. ScrollMe – 在网页中加入各种滚动动画效果

    ScrollMe 是一款 jQuery 插件,用于给网页添加简单的滚动效果.当你向下滚动页面的时候,ScrollMe 可以缩放,旋转和平移页面上的元素.它易于设置,不需要任何自定义的 JavaScri ...

  4. 利用Gulp实现JSDoc 3的文档编写过程中的实时解析和效果预览

    ### 利用Gulp实现JSDoc 3的文档编写过程中的实时解析和效果预览 http://segmentfault.com/a/1190000002583569

  5. 【转】关于python中re模块split方法的使用

    注:最近在研究文本处理,需要用到正则切割文本,所以收索到了这篇文章,很有用,谢谢原作者. 原址:http://blog.sciencenet.cn/blog-314114-775285.html 关于 ...

  6. 如何让IOS中的文本实现3D效果

    本转载至 http://bbs.aliyun.com/read/181991.html?spm=5176.7114037.1996646101.25.p0So7c&pos=9       zh ...

  7. VUE中实现iview的图标效果时遇到的一个问题

    [Vue warn]: You are using the runtime-only build of Vue where the template compiler is not available ...

  8. WPF中利用RadialGradient模拟放大镜效果

    原文:WPF中利用RadialGradient模拟放大镜效果 --------------------------------------------------------------------- ...

  9. javascript中slice(),splice(),split(),substring(),substr()使用方法

    因为本人在使用这些方法时常有混淆,特总结如下: 1.slice(): Array和String对象都有 在Array中  slice(i,[j]) i为开始截取的索引值,负数代表从末尾算起的索引值,- ...

随机推荐

  1. R_Studio中对xls文件学生总成绩统计求和

    我们发现这张xls表格是没有学生总分的,在xls文件中计算学生总分嫌麻烦时,可以考虑在R Studio中自定义R Script脚本来解决实际问题(计算每个学生的总成绩) .xls数据表中的数据(关键信 ...

  2. python3 set集合,以及字典,使用技巧

    #set集合,无序不可重复setjh={'ofgh','gegds','uutytr'} setjh.add('uuuuu')#添加单个元素setjh.remove('ofgh')#删掉单个元素pri ...

  3. DVWA--CRSF

    首先我们对CRSF进行一个介绍 CSRF,全称Cross-site request forgery,翻译过来就是跨站请求伪造,是指利用受害者尚未失效的身份认证信息(cookie.会话等),诱骗其点击恶 ...

  4. vue 移动端的开发

    一:cli 的安装: cnpm install -g @vue/cli默认是安装在如下目录:C:\Users\xiaocj\AppData\Roaming\npm\node_modules\@vue ...

  5. 实现图像添加label

    void CmapwingisTest2View::OnToolsAddTiffLayer() { TCHAR szFilters[]= _T("TIFF Files (*.tif)|*.t ...

  6. Nature/Science 论文阅读笔记

    Nature/Science 论文阅读笔记 Unsupervised word embeddings capture latent knowledge from materials science l ...

  7. 浏览器端-W3School-HTML:HTML DOM cells 集合

    ylbtech-浏览器端-W3School-HTML:HTML DOM cells 集合 1.返回顶部 1. HTML DOM cells 集合 HTML DOM Table 对象 定义和用法 cel ...

  8. python 元组和数组

    参考:https://stackoverflow.com/questions/1708510/list-vs-tuple-when-to-use-each tuple(元组):不可变,不能添加.删除. ...

  9. 阶段3 2.Spring_08.面向切面编程 AOP_3 spring基于XML的AOP-编写必要的代码

    新建项目 先改打包方式 导包,就先导入这俩包的坐标 aspectjweaver为了解析切入点表达式 新建业务层接口 定义三个方法 看返回和参数的区别.为了把这三类方法表现出来,并不局限于方法干什么事 ...

  10. CSS3 长度单位

    http://www.w3chtml.com/css3/units/length/vh.html https://www.html.cn/book/css/values/length/vh.htm . ...