C ++: Как я могу оптимизировать копирование остальной части файла .txt? - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть большие текстовые файлы, в которые мне нужно встроить код (время), часть пути через файл.Я делаю это, перебирая ifstream до точки, в которую необходимо вставить код, а затем продолжаю перебирать оставшуюся часть файла, непрерывно копируя данные в новый ofstream file.

Эти файлы имеют большой размер, и почти вся эта простая операция копирования и вставки выполняется после вставки кода.Это займет некоторое время, чтобы выполнить. Мне было интересно, есть ли способ оптимизировать копирование остальной части файла навалом (вместо пословной итерации для остальной части файла).Это соответствующий сегмент кода:

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 голосов
/ 25 февраля 2019

Ответ Пита Беккера, приведенный выше, был именно тем, что было нужно.

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();

Спасибо всем, кто прокомментировал;Вы были очень информативны, и теперь я знаю намного больше, чем когда я задавал этот вопрос!

...