ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-01-03 09:30:02  阅读:196  来源: 互联网

标签:150 ate Eigen 文件 矩阵 读写 ios 75 out


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是默认必带的,可加上也可不加,对程序无影响)

标签:150,ate,Eigen,文件,矩阵,读写,ios,75,out
来源: https://blog.csdn.net/juluwangriyue/article/details/122283958

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有