【问题标题】:how to seek a specific line to append data or append data to last line in c++如何在c ++中寻找特定行以附加数据或将数据附加到最后一行
【发布时间】:2016-10-11 07:08:23
【问题描述】:

在将数据写入文件的迭代中,我想将数据写入不同的行。

看起来像:

0.2 0.3

1 2

0.4 0.5 cursor should be here

现在我将追加数据:

0.6

3

0.6

所以我需要在第一行追加0.6,然后移动到追加3,然后是0.6

如何使用 c++ 做到这一点?我使用 ofstream 作为附加模式打开文件,现在我使用 c++ 和 stl c++11。 seekp 似乎只移动一个字符步而不是一个行步。有任何想法吗?谢谢。

【问题讨论】:

  • 我不建议在文件中执行此操作,因为每次写入文件时都会替换当前内容。将完整文件读入内存,然后移动内存可能更容易。或者边看边修改。或者在写的时候修改。

标签: c++ file c++11 ofstream


【解决方案1】:

追加模式仅适用于将数据添加到文件的最后,而不是您想要的中间位置。

为此,您几乎需要逐行复制文件,并根据需要添加数据,按照以下一般顺序:

std::vector<double> additions { 0.6, 3, 0.6 };

std::string line;

for (int i=0; i<3; i++) {
    std::getline(infile, line);
    outfile << line;
    outfile << " " << additions[i];
}

【讨论】:

  • outfile &lt;&lt; line 在追加模式下不会覆盖当前行下方的那些行?
  • @NickDong:这里的意图是从现有文件中读取数据,并将数据写入一个新的(以前为空的)文件。
猜你喜欢
  • 2018-11-20
  • 1970-01-01
  • 2015-07-12
  • 1970-01-01
  • 2021-11-08
  • 2022-11-02
  • 1970-01-01
  • 2019-05-24
  • 1970-01-01
相关资源
最近更新 更多