C++中读文件的方法

  • 1. 读文件准备工作
  • 2. 读取文件的3种方法举例说明
    • 1.getline()全局函数
    • 2. 流输入方式ifs<\

1. 读文件准备工作

1.前提,首先读文件需要引入头文件ifsteam或者ofstream。
2.直接创建类对象  如:ifstream ifs;
3.需要提前创建数组或者是字符串变量来存储,ifs对象所读取的文本内容

接着有三种方法来读取文件内容。

  1. getline(ifs,string ) 有一个全局函数getline,不依赖于类对象的前提,使用时只需要将输入流ifs作为函数参数传入getline中,并且将读取的数据存入事先创建好的数组字符串变量string中。
  2. ifs<<buf;当创建ifstream对象后,可以像操作cin一样操作这个对象,也就是可以把ifstream的对象当做cin一样进行输入
  3. ifs.getline(char *buf,sizeof(buf)) ifstream的类对象ifs中含有成员函数getline函数,可以将TXT文件中的内容一行一行的读取,每次读取之后将内容存入buf中。

2. 读取文件的3种方法举例说明

1.getline()全局函数

  1. 对于全局函数getline的用法,由于该函数默认是一行一行的读取,所以需要while循环来读取txt文本的所以内容,当遇到‘\n’,标志读取该行结束。
    当读取不到任何字符的时候就返回false,可用于判断文件是否结束

eg1:

fstream in;in.open("ELIST_te_sphe.txt", ios::in);//LISTE   ELIST_test1.txt   ELIST_test_sphere.txt        DLIST_tes_sphestring str;while(getline(in,str)){cout << str<<endl;}


(结果显示)

2. 流输入方式ifs<<buf存取

  1. 对于ifs<<buf流输入方式存取,其原则是当碰见空格之后,就结束当前读取,所以想要读取完文本内容,就必须借助while,当没有字符读入时结束文本读取。
    eg2:
    //代码引入fstream in;char buf[1024];in.open("ELIST_te_sphe.txt", ios::in);while (in >> buf){cout << buf << endl;}

(结果显示)


【拓展】该读取方法将以空格作为结束读取标志,若是要读取指定区域的文本内容就需要添加代码操作,进行存取。(注:引入如下代码实现对红色区域存取)

     while (in >> buf){//cout << buf << endl;if ('0' <= buf[0] && buf[0] <= '9'){bianhao[i]=atoi(buf);//cout << atoi(buf) <<"  "<< typeid(atoi(buf)).name() << endl;//cout << bianhao[i] << "  "<<i<< endl;i++;}}for (int j = 0; j < i; j++){if (!(j % 26 <= 5 && j % 26 >= 0)){temp[flag] = bianhao[j];cout << temp[flag] << " ";flag++;if (j % 26 == 25){cout << endl;}}}in.close();

(结果显示)

3.ifs.getline(char *buf,sizeof(buf))

  1. 对于ifs.getline读取方法,和getline全局函数类似。也是按行读取,并且当遇到‘\n’之后,结束当前行读取。直到没有数据读取就结束当前文本读取。(注:读取的时候也会将空格读入数组,在提取数据的时候,就需要指定关键信息存取)
    eg3:
 fstream in;string v, x, y, z;int i = 0, flag = 0;MatrixXd temp_zuobiao(1, 4);MatrixXd node_zuobiao(0, 4);in.open("NLIST_test_sphe.txt", ios::in);//LISTE   ELIST_test1.txt   ELIST_test_sphere.txtwhile(in.getline(buf, sizeof(buf))){stringstream word(buf);//采用字符流格式将读取的str进行空格分隔,并放入str word中//word >> zuobiao[flags].bianhao;word >> v;if (v <= "9"&& v >= "0"){word >> x;word >> y;word >> z;temp_zuobiao(0, 0) = atof(v.c_str());temp_zuobiao(0, 1) = atof(x.c_str());temp_zuobiao(0, 2) = atof(y.c_str());temp_zuobiao(0, 3) = atof(z.c_str());node_zuobiao = append(node_zuobiao, temp_zuobiao);//cout << zuobiao[flags].bianhao << " " << zuobiao[flags].U << " " <<//zuobiao[flags].real << " " << zuobiao[flags].imge << " " << endl;//flags++;}           }cout << "—节点坐标—" << endl << node_zuobiao << endl;

(结果显示)

总之

3种读取方法都只是将内容全部读出来,然后存入数组之中,如果需要对文本的指定区域进行读取就需要,写一系列操作,来实现。
本文给了几种思路可供参考,如果有更好的方法,也请多多指教。
最后如果读者觉得本文有用,还请点个赞哟!

c++中文件的读处理多种方案解析相关推荐

  1. 【轻松学】python中文件的读和写——open、read或readline、close

    文章目录 01. 文件的概念 1.1 文件的概念和作用 1.2 文件的存储方式 文本文件和二进制文件 02. 文件的基本操作 2.1 操作文件的套路 2.2 操作文件的函数/方法 2.3 read 方 ...

  2. python3中文件的读与写

    Python open() 函数用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出错误 完整语法:open(file, mode='r', buf ...

  3. 地平线机器人Waymo Open Dataset Challenge中2D目标检测赛道第二名方案解析

    点击上方"AI算法修炼营",选择"星标"公众号 精选作品,第一时间送达 这是地平线机器人在CVPR 2020 Waymo Open Dataset Challe ...

  4. 使用GPU加速图片处理的多种方案解析

    图片处理是最常见的任务之一.如果是熟悉计算机视觉方向的肯定对OpenCV+Numpy的方案不陌生:用OpenCV读取图片,用Numpy的矩阵操作快速完成处理.由于OpenCV支持所有格式的图片,而Nu ...

  5. c mysql 并发处理_mysql队列中实现并发读的实现方法解析

    可以这样理解Mysql中的查询操作: 一个 MySQL 表可以看作是一个队列,每一行为一个元素. 每次查询得到满足某个条件的最前面的一行,并将它从表中删除或者改变它的状态,使得下次查询不会得到它. 无 ...

  6. c++ 读文件_python中文件的使用

    在程序运行时,数据时保存在内存的变量里.内存中的数据在程序结束后或关机后就会消失.如果想要在下次开机运行程序时还想使用同样的数据,就需要把数据存储在不易失的存储介质中,比如硬盘.u盘.不易失存储介质上 ...

  7. 如何读写txt文件 C++读和写txt文件操作 查找文件中存储的字符串中逗号的位置

    C++读和写文件操作说明 一. C++读和写文件操作说明 文章目录 C++读和写文件操作说明 一. C++读和写文件操作说明 1.打开方式 2.实例代码 2.1 第一版代码 2.2 第二版代码 二.补 ...

  8. python怎么读取txt文件数据保存数组中-python将txt等文件中的数据读为numpy数组的方法...

    实际中,很多数据都是存为txt文件.csv文件等,但是在程序中处理的时候numpy数组或列表是最方便的.本文简单介绍读入txt文件以及将之转化为numpy数组或列表的方法. 1 将txt文件读为lis ...

  9. 编程中python怎么读-编程语言如何在Python中读写文件

    从文件读取和写入文件是任何编程语言的常见需求.任何文件在读写之前都需要打开.大多数编程语言都使用open()方法来打开文件,以便使用文件对象(file object)读写.可以使用不同类型的文件访问模 ...

最新文章

  1. Rocket - tilelink - FIFOFixer
  2. C#操作Excel,套用模板并对数据进行分页
  3. 训练日志 2019.2.24
  4. 微纪实 | 人工智能产业落地最真实的样子
  5. commons-fileupload 的详细介绍与使用
  6. 【现代软件工程】第一次作业——词频统计
  7. 关于local storage及session storage 应用问题
  8. 邮箱管理系统 -- 【课程设计】 idea; MVC; mysql;jsp
  9. lcd12864资料
  10. SNF快速开发平台--多组织+多平台+多系统处理方案
  11. 数组:s.length()与s.length的区别
  12. mac用什么写python程序_macos,python_大家在mac系统都用什么编辑器写python程序?,macos,python - phpStudy...
  13. vue中 ECharts 图表使用教程
  14. java B2B2C Springcloud电子商务平台源码
  15. ThreadLocal在多线程中的作用和原理浅析(模拟学生入学报到场景)
  16. 爬虫例子——多页、函数模板
  17. 7款短视频创作必备软件分享,在家用手机就能做,每月收益4千+
  18. 了解GPIO端口的初始化设置三步骤LED流水灯C语言 寄存器方式编程实现
  19. 打造ChatGPT的团队:平均年龄32岁!华人成员:清北+名校深造
  20. python-opencv消除视频中的黑色闪屏

热门文章

  1. 软件设计师考试 设计模式
  2. rscp胎位图_肩先露的胎方位为什么只有四种?
  3. 23届秋招百度笔试算法题
  4. 腾讯“云+未来”峰会:助力西安打造“数字丝绸之路”
  5. UI 设计标准规范 个人总结
  6. 条形码扫描器通讯编程
  7. SQL学习>2.23
  8. 《14款经典窗帘SketchUp模型》每个室内人都应该看的经典
  9. 6款jQuery图表插件
  10. Linux|显示法国国旗