C++_从流(stream)向文件保存多个数组的元素

本文介绍了如何使用C++的fstream流操作,将多个具有相同结构的数组如float[]按10个元素一行格式保存到txt文件中,通过指针和引用实现数组内容的逐行写入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文的目的是为了介绍如何将多个具有相同结构的数组元素,保存进一个txt文件中。

float x[50] = {一大堆元素};
float y[50] = {一大堆元素};
float Z[50] = {一大堆元素};
float w[50] = {一大堆元素};;

此处我想把几组数组内的值,按照10个一行的形式保存到txt文件中。这个时候就有请 流(stream) 出场。
关于流与文件的操作,请参考:[c++] fstream的使用方法
下面开始展示代码:
当然记得在代码所在的cpp中加:

#include <fstream>

带有注释的代码如下:

//保存优化参数至固定位置
fstream dataEx;
dataEx.open("D:\\...\\Test.txt", ios::out | ios::app);//打开绝对路径下的Test.txt文件,不存在的话就新建一个,ios::out | ios::app表示写出模式,新增值写在原有数值后

//此处是关键,相当于变现实现4个数组保存到另一个数组中
float* opList[4] = { &x[0],&y[0],&z[0],&w[0] };//创建和初始化4个数组的首地址指针数组,optList数组中保存四个数组的首地址。&引用实质是常量指针

//遍历4个数组的首地址
	for (int n_optList = 0; n_optList < 4; n_optList++)
	{
		int n_tmpN = 1;
		//txt的对象中输入“数组n”,末尾回车
		dataEx << "数组" << n_optList + 1 << endl;
		//遍历4个数组中每个数组的值,并按照10个一行进行保存
		for (int n_pnt = 0; n_pnt < 50; n_pnt++)
		{
			float opListTmp = *(opList[n_optList] + n_pnt);//利用取地址内的数据赋值给optListTmp,地址+1指针指向到下一个地址,float为4字节,即16位,VS中的内存显示是按照16位的,因此此处加1即可指向下一个内存(理解的可能有问题,请大家指正)

			dataEx << opListTmp << ends;//数据之间用空格隔开

			n_pnt++;
			//每10个为一行,第十个后的末尾用回车补充
			while (n_pnt == 10 * n_tmpN)
			{
				dataEx << endl;//第十个后的末尾用回车补充
				n_tmpN++;
			}
			n_pnt--;//++又--是为了逻辑要求
		}
	}

	dataEx.close();//写入完成后必须关闭才可以正常保存

最终的效果就类似于下边的格式:

数组1
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
数组2
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
数组3
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
数组4
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10

核心:
利用引用和指针将数组的首地址存入新的数组,并利用指针进行访问。

float* opList[4] = { &x[0],&y[0],&z[0],&w[0] };

float opListTmp = *(opList[n_optList] + n_pnt);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十月旧城

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值