所以我循环遍历数据文件,以便根据每个数据文件进行计算(计算是针对每个文件中的 20 个 bin 完成的,因此每个文件有 20 个结果)。然后我想将每个计算结果放入一个 csv 文件中,以便我能够对每个文件的计算结果进行平均。
每次我循环访问一个文件时,我都会在单元格 A1 到 A20 中获得一个包含 20 个结果的 csv 文件。
但是,我想要的是一个 csv 文件,在单元格 A1 到 A20 中有 20 个结果,在单元格 B1 到 B20 中有另外 20 个结果,等等。在单元格 CV1 到 CV20 中最多有 20 个结果。
我在每个循环中用于输出数据的代码如下所示:
ofstream ofs (path2 + "tanShears.csv", ofstream::out);
for (int j = 0; j < r.size(); j++) {
ofs << tShears[j] << endl;
显然,当我这样做时,我最终在单元格 A1 到 A20 中得到了 20 个结果,对应于循环中的最终数据集,因为每个循环都只是覆盖前一个循环。
我有什么想法可以定位 csv 文件中的特定单元格,以便我可以将每个循环的结果输出到同一 csv 文件的不同部分吗?
最佳答案
CSV 文件的结构如下:
[A1];[B1];[C1];...\n
[A2];[B2];...\n
[A3];[B3];...\n
如果你不想一次写入整个数据,你将不得不读取整个文件,解析它,进行相应的更改,然后再写入。我几乎会不惜一切代价避免这种情况。
现在来看一些示例代码:(我假设您正在打印一些 int 值)
void writeToCSV(std::vector<std::vector<int>> const& tShears)
{
ofstream ofs (path2 + "tanShears.csv", ofstream::out);
for (std::vector<std::vector<int>>::iterator j = tShears.begin();
j != tShears.end(); j++)
{
for(std::vector<int>::iterator i = j->begin(); i < j->end(); j++)
{
ofs << i << ";";
}
ofs << std::endl;
}
ofs.close();
}
在此示例中,内部 vector 包含您进行的所有计算的第 n 个值。所以它可能包含 A1, B1, C1...
关于C++:如何将数据作为 CSV 输出到现有文件中的一组特定单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42554043/