C ++:如何优化复制其余的.txt文件?

时间:2019-02-24 23:10:05

标签: c++ optimization text ifstream ofstream

我有很大的文本文件,需要将代码(时间)嵌入其中,这是整个文件过程的一部分。我这样做是通过遍历 ifstream 到需要插入代码的点,然后遍历文件的其余部分,并将数据连续复制到一个新的 文件。

这些文件很大,几乎所有这种简单的复制和粘贴操作都发生在代码插入之后。这需要一段时间才能执行。 我想知道是否有一种方法可以优化批量复制文件的其余部分(而不是逐个单词地迭代文件的其余部分)。这是相关的代码段:

while (!in.eof())
{
    in >> value;
    if ((counter > 392) && (counter < 399) && (timePosition < 6))
    {
        rounded = floorf(value * 1000) / 1000;
        value = rounded + (time[timePosition] * .00001);
        timePosition++;
    }
    out << value << " ";
    counter++;
}

1 个答案:

答案 0 :(得分:2)

皮特·贝克尔(Pete Becker)的答案就是所需要的。

out << in.rdbuf();

使用此缓冲区指针命令,以前在一分钟内执行的操作现在只需几秒钟。新代码:

while (counter < 399)
{
  in >> value;
  if ((counter > 392) && (counter < 399) && (timePosition < 6))
  {
    rounded = floorf(value * 1000) / 1000;
    value = rounded + (time[timePosition] * .00001);
    timePosition++;
  }
  out << value << " ";
  counter++;
}
out << in.rdbuf();

感谢所有发表评论的人;您提供的信息非常丰富,现在我比问这个问题时了解的更多!