转载声明:
ifstream、sstream
C++ getline()函数的用法
一、预备知识:
主要用到:
1、getline(ifstream in, string line);
将文件in中的数据按行读取到line中
2、getline(stringstream ss,string tmp,const char ch);
将输入字符串流ss中的字符,按ch分割开,依次存入tmp中,直至ss读完。
其中,
stringstream :头文件sstream.h
ifstream :头文件fstream.h
string:头文件string.h

二:实例
1、分割存储固定为3列的小数文件
sstream_fstream.txt文件:
12.34 -3.21 90.34
23 22.1 89.32
100.01 22.78 -9.345

struct point{double x, y, z;friend ostream& operator<<(ostream& os, const point p){os << "(" << p.x << "," << p.y << "," << p.z << ")";return os;}
};void test7(){cout << "-----------test7----------- " << endl;ifstream in("sstream_fstream.txt");string line;while (getline(in, line)){//将in文件中的每一行字符读入到string line中stringstream ss(line);//使用string初始化stringstreampoint p;while (ss >> p.x >> p.y >> p.z){}//由于固定为三列。所以可以这样读取,stringstream 默认按空格分割字符串cout << p << endl;}
}

2、分割多行文件中每行用空格隔开的字符串,每行包含的小数数字个数不同
sstream_fstream1.txt文件:
12.34 -3.21 90.34
23 22.1 89.32 78.65 6.66
100.01 22.78 -9.345

void test(){cout << "-----------test----------- " << endl;ifstream in("sstream_fstream1.txt");string line;while (getline(in, line)){//获取文件的一行字符串到line中stringstream ss(line);//初始化 法1double x;while (ss >> x){//每一行包含不同个数的数字cout << x << "\t";}cout << endl;}
}

3、分割多行文件中每行用","隔开的字符串,每行包含的小数数字个数不同
sstream_fstream2.txt文件:
12.34,-3.21,90.34
23,22.1,89.32,78.65,6.66
100.01,22.78,-9.345,5.09

void test5(){cout << "-----------test5----------- " << endl;ifstream in("sstream_fstream2.txt");string line;vector<vector<double>> vv;while (getline(in, line)){stringstream ss(line);string tmp;vector<double> v;while (getline(ss, tmp, ',')){//按“,”隔开字符串v.push_back(stod(tmp));//stod: string->double}vv.push_back(v);}for (auto row : vv){for (auto col : row){cout << col << "\t";}cout << endl;}cout << endl;
}

4、读取 每一行按“姓名(空格)国籍(空格)分数(空格)一串话(里面包含空格)”格式存储的文件
sstream_fstream3.txt文件:
Leo France 95.5 I believe i can!
Aric Austria 88 Oh my god~~~
Athene China 100 Ha ha 不使用双截棍,哼哼哈嘿!!~~~#¥%……&

void test6(){cout << "-----------test6----------- " << endl;ifstream in("sstream_fstream3.txt");string line;while (getline(in, line)){stringstream ss(line);string tmp;int i = 0;string name, country;double score;string words;while (getline(ss, tmp,' ')){if (i == 0)name = tmp;else if (i == 1)country = tmp;else if (i == 2)score = stod(tmp);else words = words + tmp + " ";//将该行剩余的字符仍然按空格分割后依次追加在string words后面i++;}cout << name << "\t" << country << "\t\t" << score << "\t\t" << words << endl;}
}

三、结果:

c++按行读取txt文件中的内容,并按特定字符分割相关推荐

  1. R语言读取txt文件中的内容

        在RGui中读取.txt文件中的内容,采用函数read.table("xxx.txt",head=TRUE|FALSE); 其中head=TRUE表示含有属性的标题,hea ...

  2. 批量读取txt文件中的内容进入csv文件

    假如我们某个文件夹下有批量txt文件,我们想把这些文件的内容读入csv文件中以便程序做下一步处理,此时我们就需要实现从txt–>csv的转换,网上很多例子,不过不怎么好使,于是自己基于pytho ...

  3. 水文日常~~Python如何按行读取txt文件中的数据并去除每行末尾的回车符\n

    #从文件中读取数据 with open ('data.txt') as file_object:lines = file_object.read().splitlines()#去除每行末尾的回车符

  4. java读取txt文件中的内容

    java读取txt文档中的内容:在这个地方我们输入一个txt文件的路径,就可以读取出txt文档中的内容: public static String readStringFromtxt(String t ...

  5. php下载数组里的图片,php 读取txt文件中的内容,转换成数组,根据URL将图片下载到本地(curl爬取)...

    link.txt文件内容(注意地址可以无限多) https://youimg1.c-ctrip.com/target/100m1f000001gzojc0664_D_521_391.jpg https ...

  6. 【C++】读取txt文件中指定行的内容

    使用c++读取TXT文件中指定行的内容 classification_classes_ILSVRC2012.txt:下载链接 验证: #include <iostream> #includ ...

  7. 学python看什么书好1002无标题-如何使用pandas读取txt文件中指定的列(有无标题)

    最近在倒腾一个txt文件,因为文件太大,所以给切割成了好几个小的文件,只有第一个文件有标题,从第二个开始就没有标题了. 我的需求是取出指定的列的数据,踩了些坑给研究出来了. import pandas ...

  8. python按行读取txt文件-Python逐行读取txt文本,按符合分割词并逐行写入txt

    背景Background: 我的txt文件里面存放的是搜索词,由于原始的query(搜索词)都是用/或者.来分割词,而我要达到的是每个词语是单独的一行,并且写入txt 第一步:按行读取txt文件 s ...

  9. python导入txt文件并绘图-Python实现读取txt文件中的数据并绘制出图形操作示例

    本文实例讲述了Python实现读取txt文件中的数据并绘制出图形操作.分享给大家供大家参考,具体如下: 下面的是某一文本文件中的数据. 6.1101,17.592 5.5277,9.1302 8.51 ...

  10. python按列读取txt文件_如何使用pandas读取txt文件中指定的列(有无标题)

    最近在倒腾一个txt文件,因为文件太大,所以给切割成了好几个小的文件,只有第一个文件有标题,从第二个开始就没有标题了. 我的需求是取出指定的列的数据,踩了些坑给研究出来了. import pandas ...

最新文章

  1. 前瞻:Spring Boot 2.4.0 第二个里程碑版本发布
  2. grid - 使用相同的名称命名网格线和设置网格项目位置
  3. 基于C++和 Opencv1.0实现 二维平面多点拟合直线
  4. 使用BeetleX网关对Web应用进行灰度发布
  5. Vue数据绑定v-bind
  6. 一键获取数据库整体信息脚本
  7. PAT乙级 1013 数素数
  8. 2017.2.27自测
  9. Redis主从自动failover
  10. 表单里面能不能套表单_抽奖+表单,居然还能这么玩?
  11. ParticleEditor粒子编辑器
  12. 用python实现猜数字游戏
  13. 用c语言编程英雄联盟,用C语言编写购置英雄联盟中的物品的过程
  14. 64qam带宽计算_烧脑:5G 理论峰值速率是怎么计算的?
  15. 达摩院预测的2023十大科技趋势,你看准哪个?
  16. 红米手机html文件,手机教程知识:红米手机显示隐藏文件的操作流程
  17. web编程期中大作业
  18. Zcash中的加解密机制
  19. 第三个脚本——时间加速and视频倍速
  20. 通达信金融终端卖点爆点怎么显示?

热门文章

  1. oracle 删除用户命令和部分表空间操作
  2. HDU today(最短路径)
  3. 《Orange'S:一个操作系统的实现》与上一版之比较
  4. c++ 宏 stdin 和 STDIN_FILENO 区别
  5. [2018.07.14 T1] B君的第四题
  6. BZOJ3506 [CQOI2014]排序机械臂
  7. git学习笔记(1-集中式与分布式版本控制工具对比)
  8. 第一台计算机 采用工 作原理,第1讲计算机工作原理模版课件.ppt
  9. 计算机网络基础学ppt,计算机网络基础学习情景.ppt
  10. 导航栏html_html操作和思考(二):统一导航栏文字高度的方法