【发布时间】:2020-04-07 18:37:06
【问题描述】:
我目前在 for 循环期间将一堆值写入特征数组。我想在 for 循环的每次迭代后以制表符分隔的方式将该 Eigen 数组的状态写入该文件。但是,以我目前正在执行的方式,我正在编写文件,它只是将特征数组的值附加到前一个向量已经存在的列上。结果是文件是 1 列,即 200,000 个条目长,它们应该是 200 列,即 1000 个条目长。下面的快速示例代码显示了该过程。
#include<iostream>
#include<fstream>
#include<Eigen>
using Eigen::VectorXd;
int main()
{
std::ofstream myfile1;
VectorXd en(1000);
std::string energyname = "Energies.txt";
myfile1.open(energyname);
for (int i = 0; i < 200; i++)
{
for (int j = 0; j < 1000; j++)
{
en(j) = 10;
}
myfile1 << en << std::endl;
}
}
如何改写它,使其不会将代码附加到输出末尾的后面
【问题讨论】:
-
我编辑了这篇文章。这是在 Windows 机器上
-
我正在使用视觉工作室。所有的编译都在那里进行。我通常使用记事本,但记事本++中的结果是相同的
-
您是否验证了您的示例在此处重复了错误?您是否在实际程序中的任何地方都修改了
myfile1的语言环境?我不在我的 Windows 机器上,所以我无法自己验证这一点。 -
不,这一切都在 for 循环中完成,文件名没有变化。
-
您显示的代码(在修正了一些错别字之后)实际上会垂直输出每个向量,即基本上由
'\n'(和一些填充空格)分隔的 200000 个值。请确保您发布重现您行为的确切代码(即minimal reproducible example)!您发布的代码甚至无法编译(由于一些琐碎的拼写错误)。