Обновление файла с помощью библиотеки <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;
}