Обновление файла с помощью библиотеки <fstream> (перезапись только определенного раздела)

Я хочу спросить, есть ли способ обновить, скажем, текстовый файл с содержимым "ooooo" до "ooXXo" с помощью библиотеки fstream. Я знаю, что есть способ cstdio, но я не хочу использовать его из-за неподдерживаемой обработки исключений... Кроме того, я не хочу читать файл в память, обновлять нужный раздел, а затем записывать все в чистый файл... в основном я ищу способ сделать это с помощью fstream:

/* fseek example */
#include <stdio.h>

int main ()
{
  FILE * pFile;
  pFile = fopen ( "example.txt" , "w" );
  fputs ( "This is an apple." , pFile );
  fseek ( pFile , 9 , SEEK_SET );
  fputs ( " sam" , pFile );
  fclose ( pFile );
  return 0;
}

2 ответа

Решение
#include <fstream>

int main (){
  std::fstream pFile("example.txt");
  pFile << "This is an apple.";
  pFile.seekp(9);
  pFile << "sam";
  pFile.close();
  return 0;
}

fstream по умолчанию открывает файл для чтения и записи. Есть второй аргумент со значением по умолчанию в конструкторе, который управляет этим поведением.

#include <fstream>

int main()
{
    std::ofstream os("example.txt");
    os<<"This is an apple.";
    os.seekp(9);
    os<<" sam";
    return 0;
}
Другие вопросы по тегам