Eigen库学习笔记(十一)读写矩阵文件

Eigen库学习笔记(十一)读写矩阵文件

由于调试时看不到矩阵的尺寸和数值,所以可以通过保存文件的形式查看矩阵。

1、写txt文件

代码:

void test_save_txt(Eigen::MatrixXf mat, string filename)
{
	ofstream outfile(filename, ios::trunc);
	outfile << mat;
	outfile.close();
}

测试用例

Eigen::MatrixXf mat(24, 3);
	mat <<
		50, 25, 25,
		100, 50, 50,
		150, 75, 75,
		75, 50, 50,
		150, 100, 100,
		225, 150, 150,
		100, 75, 50,
		200, 150, 100,
		300, 225, 150,
		100, 75, 75,
		200, 150, 150,
		300, 225, 225,
		425, 50, 75,
		850, 100, 150,
		1275, 150, 225,
		475, 75, 125,
		950, 150, 250,
		1425, 225, 375,
		400, 75, 75,
		800, 150, 150,
		1200, 225, 225,
		425, 75, 100,
		850, 150, 200,
		1275, 225, 300;

test_save_txt(mat, "data.txt");

输出到文件中的内容:

  50   25   25
 100   50   50
 150   75   75
  75   50   50
 150  100  100
 225  150  150
 100   75   50
 200  150  100
 300  225  150
 100   75   75
 200  150  150
 300  225  225
 425   50   75
 850  100  150
1275  150  225
 475   75  125
 950  150  250
1425  225  375
 400   75   75
 800  150  150
1200  225  225
 425   75  100
 850  150  200
1275  225  300

2、读写的一些选项

ofstream流,

  • 以ios::app打开(或者“ios::app|ios::out”),如果没有文件,那么生成空文件;如果有文件,那么在文件尾追加。
  • 以ios::app|ios::in打开,不管有没有文件,都是失败。
  • 以ios::ate打开(或者”ios::ate|ios::out”),如果没有文件,那么生成空文件;如果有文件,那么清空该文件
  • 以ios::ate|ios::in打开,如果没有文件,那么打开失败;如果有文件,那么定位到文件尾,并可以写文件,但是不能读文件

ifstream流,

  • 以ios::app打开(“ios::app|ios::out”),不管有没有文件,打开都是失败。
  • 以ios::ate打开(“ios::ate|ios::out”),如果没有文件,打开失败
  • 如果有文件,打开成功,并定位到文件尾,但是不能写文件

fstream流,默认是ios::in,所以如果没有文件,ios::app和ios::ate都是失败,

  • 以ios::app|ios::out,如果没有文件则创建文件,如果有文件,则在文件尾追加
  • 以ios::ate|ios::out打开,如果没有文件则创建文件,如果有,则清空文件。
  • 以ios::ate|ios::out|ios::in打开,如果没有文件,则打开失败,有文件则定位到文件尾

可见:ios::app不能用来打开输入流,即不能和ios::in相配合
而ios::ate可以和ios::in配合,此时定位到文件尾;如果没有ios::in相配合而只是同ios::out配合,那么将清空原文件
(ios::ate|ios::in–>在原文件尾追加内容;ios::ate—>清空原文件,ios::out是默认必带的,可加上也可不加,对程序无影响)

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

落花逐流水

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

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

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

打赏作者

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

抵扣说明:

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

余额充值