c ++ как изменить файл с помощью fstream - PullRequest
1 голос
/ 07 августа 2020

Я хочу отредактировать первые 100 символов файла, я делаю это, но новые символы отменяют предыдущие (как на фото) нажмите здесь фото

мой код:

fstream fileStreamIn("text.txt", ios::in | ios::out | ios::binary);

int theSize = 100;
string theMainBuffer(theSize, '\0');
fileStreamIn.read(&theMainBuffer.front(), theSize);
theMainBuffer.resize(fileStreamIn.gcount());
//cout << theMainBuffer << endl;
fileStreamIn.close();


fileStreamIn.open("text.txt", ios::in | ios::out | ios::binary);
fileStreamIn  << "blahblah ";
fileStreamIn.close();

Я хочу, чтобы к содержимому файла добавлялось «blahblah», а предыдущее содержимое «helloworld» не удалялось

вывод:

blahblahrld !
è !©ª}2•¼Ü²ù­XkLÉ·ð„!ð–ç„ñWïðʃ¡ åñ·§Dß}ˆ¹mÐÕŠw:—*ËtMÒJf-Öù“hñ<³:rÛä‡   ”‘Ôyv-4mXþeߧzè’¬ŒŽ<¤‘“‰l'g‚Šâ¡;¬Èa|ÔÁ3îú€;‰±Ï.ÖLáÑȽ[ïÿÿúU%ã2§Ls§n~çˆÏÔäÔ™ 4øÒ‘Ö°,y•»Ô'`` ¬ÜgÜò`÷Tº^E1ØàùÛ÷i§d¨Ù`I5»7á8Zéz0¥Ž’3Y7Êœ¦}eíÝΦIm?óbÙOâ-ŸäëŠgýhýR
Â3‘†y±è±/VŠ¤?Ïù4?’ÑûIÆLQ~DãŠ?Ôêð#N ]³böPK     ZQamë  š  PK      5   -    

Мне нужен этот вывод:

blahblah hello world !
è !©ª}2•¼Ü²ù­XkLÉ·ð„!ð–ç„ñWïðʃ¡ åñ·§Dß}ˆ¹mÐÕŠw:—*ËtMÒJf-Öù“hñ<³:rÛä‡   ”‘Ôyv-4mXþeߧzè’¬ŒŽ<¤‘“‰l'g‚Šâ¡;¬Èa|ÔÁ3îú€;‰±Ï.ÖLáÑȽ[ïÿÿúU%ã2§Ls§n~çˆÏÔäÔ™ 4øÒ‘Ö°,y•»Ô'`` ¬ÜgÜò`÷Tº^E1ØàùÛ÷i§d¨Ù`I5»7á8Zéz0¥Ž’3Y7Êœ¦}eíÝΦIm?óbÙOâ-ŸäëŠgýhýR
Â3‘†y±è±/VŠ¤?Ïù4?’ÑûIÆLQ~DãŠ?Ôêð#N ]³böPK     ZQamë  š  PK      5   -    

В чем проблема, как я могу решить эту проблему? спасибо

Ответы [ 2 ]

1 голос
/ 07 августа 2020

Если вы не хотите сохранять первые 100 байтов, достаточно просто создать строку длиной 100, изменить некоторые значения и записать их в поток. Чтение файла не требуется.

std::fstream fs("text.txt", ios_base::out | ios_base::binary);

string buffer(100, ' ');
string update="Hello";
buffer.replace(0, update.size(), update);

fs.seekp(20);   // move to write position
fs.write(buffer.data(), buffer.size());

fs.close();
0 голосов
/ 07 августа 2020

Используйте ios :: trun c в качестве режима открытия файла. Для получения дополнительной информации см. это .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...