C++读取txt中数据的两种方法
有时候,在程序编写过程中涉及到数据的读写,比如读入.txt文档中的数字,本文提供两种读入方法。
一、利用数据流
比如.txt中数据是如下格式:
其中第一行代表有多少个二维数组,本例中是有3个二维数组,第二行代表每个二维数组有多少行,本例中二维数组的列数是固定不变的。那么如何读取这些二维数组呢?
我的代码如下:
#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#include<fstream>using namespace std;int main()
{ifstream infile("example.txt");int num = 0;infile >> num;cout << num << endl;for (int i = 0; i < num; i++){int N = 0;infile >> N;cout << N << endl;int(*p)[5];//a pointer to a array which has 5 int p = new int[N][5];//creat a dynamic arrayfor (int j = 0; j < N; j++){infile >> p[j][0] >> p[j][1] >> p[j][2] >> p[j][3] >> p[j][4];cout << p[j][0] << p[j][1] << p[j][2] << p[j][3] << p[j][4] << endl;}
delete [] p;//free space}int aaa;cin >> aaa;return 0;
}
上述代码首先读入第一行数据,以确定二维数组个数num,然后利用for循环,依次读入各个二维数组。在每个循环中,首先读入每个二维数组的行数N,根据行数循环读入二维数组的每一行。由于二维数组的行数是不确定的,所以涉及到动态二维数组的创建,在本例中,由于二维数组的列数是固定的,所以动态数组创建方法如下:
int(*p)[5];//a pointer to a array which has 5 int
p = new int[N][5];//creat a dynamic array
首先声明一个数组指针p,该指针指向一个含有5个int变量的数组,然后利用new运算符申请空间,并将该空间的地址赋给指针p。在读入数据并进行相关操作之后(本例中的操作只是简单地输出显示),需要将动态申请的空间进行释放,利用new申请的空间,采用delete进行释放:
delete [] p;//free space
改程序 的运行结果如下:
显然,数据都得到了正确读入。
二、利用c函数fopen
代码如下:
#include<iostream>
#include<stdlib.h>
#include<stdio.h>
using namespace std;int main()
{
FILE *f;
f = fopen("example.txt", "r");//How files are used? r=we can only read the file
if (f == NULL)
{
cout << "open file failed! the programmer will exit!" << endl;
exit(-1);
}
int num = 0;
fscanf(f, "%d\n", &num);
cout << num << endl;
for (int i = 0; i < num; i++)
{
int N = 0;
fscanf(f, "%d\n", &N);
cout << N << endl;
int(*p)[5];//a pointer to a array which has 5 int
p = new int[N][5];//creat a dynamic array
for (int j = 0; j < N; j++)
{
fscanf(f, "%d %d %d %d %d\n", &p[j][0], &p[j][1], &p[j][2], &p[j][3], &p[j][4]);
cout << p[j][0] << p[j][1] << p[j][2] << p[j][3] << p[j][4] << endl;}
delete[] p;//free space
}
fclose(f);
int aaa;
cin >> aaa;
return 0;
}
与方法一一样,该段程序的运行结果如下:
故利用以上两种办法都可以实现对于.txt文档中数字的读取。
C++读取txt中数据的两种方法相关推荐
- 获得GPS数据的两种方法 1读串口
获得GPS数据的两种方法 1读串口 - [技术] 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://memset.blogbus.com/logs/17801310.ht ...
- python 学习系列(3) 读取并显示图片的两种方法
python 读取并显示图片的两种方法 在 python 中除了用 opencv,也可以用 matplotlib 和 PIL 这两个库操作图片.本人偏爱 matpoltlib,因为它的语法更像 mat ...
- java在文件的后面添加_java 在file的尾部添加数据的两种方法总结
java 在file的尾部添加数据的两种方法总结 问题描述: 在文件的末尾追加内容 方法1:利用RandomAccessFile类 1.将randomAccessFile模式设置为rw 2将rando ...
- SQLServer 批量插入数据的两种方法
SQLServer 批量插入数据的两种方法- 发布:dxy 字体:[增加 减小] 类型:转载 在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用In ...
- java 文件尾部_java 在file的尾部添加数据的两种方法总结
java 在file的尾部添加数据的两种方法总结 问题描述: 在文件的末尾追加内容 方法1:利用RandomAccessFile类 1.将randomAccessFile模式设置为rw 2将rando ...
- mvc控制器接收数据的两种方法
一.mvc控制器接收数据的两种方法 A方法: public ActionResult ProcessAdd() { string username=Request["UserName&quo ...
- java构造和解析json_Java构造和解析Json数据的两种方法详解一
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...
- java json解析 代码_Java构造和解析Json数据的两种方法详解一
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...
- Java构造和解析Json数据的两种方法详解一
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...
最新文章
- jQuery工具方法
- 关于oracle date类型值0000-0-0的分析
- 对浅拷贝与深拷贝的研究
- ORA-01843:无效的月份
- dao层如何调用对象_你的项目应该如何正确分层?
- db2 jdbc驱动参数_JDBC详细整理(一)
- 来学习几个简单的Hive函数啦
- mvc中去除html标签,MVC ValidationMessage 去除上面的Html 标签
- [2014-12-30]如何动态构造Lambda表达式(动态构造Lambda查询条件表达式)
- 应届生从头脑风暴到游戏策划案的个人思路(一)
- 软件安装包制作工具installshield 2020 R1的安装教程
- v65智慧屏是真的鸿蒙,华为智慧屏V65深测:真智慧or增智慧?
- PHP获取当前域名(判断域名)
- h5破解网站图片防盗链
- 糖尿病人食谱以及水果的食用
- 鼠标的光标变成了下划线
- 阿朱:企业信息化十年
- 【工具】百度网盘视频类资源下载新思路,轻松优雅解决下载限速方法
- 《 HTML5 》— HTML5页面元素及属性
- 机动车排放微观控制-汽油机内净化技术