#include <iostream>
#include <string.h>
#include <fstream>
#include <conio.h>
using namespace std;
int main(int argc, char*argv[])
{
ifstream fpr;
ofstream fpw;
char * rec1 = "helloWorld";
char * rec2 = "my";
char out1[50];
char out2[50];
fpw.open("sample.txt",ios::in|ios::binary|ios::app);
if(fpw.fail())
{
cout<<"The file could not be opened!\n";
exit(1); // 0 – normal exit, non zero – some error
}
fpr.open("sample.txt",ios::out|ios::binary);
if(fpr.fail())
{
cout<<"The file could not be opened!\n";
exit(1); // 0 – normal exit, non zero – some error
}
fpw.write(rec1,10);
fpr.read(out1,10);
out1[10] = '\0';
cout<<out1<<"\n";
fpw.seekp(2,ios::beg);
fpw.write(rec2,2);
fpr.seekg(0,ios::beg);
fpr.read(out2,strlen(rec1));
cout<<"\n"<<out2<<"\n";
getch();
}
С помощью этого кода я просто хочу вставить строку с именем «my» в 2-байтовое расположение строки «helloworld». Но он не вставляет его (даже если я ищу правильное местоположение). Кто-нибудь может мне помочь?
из документации по ios::mode
ИОС :: Приложение:
содержимое текущего содержимого файла. Этот флаг может быть только
используется в потоках, открытых только для операций вывода. Все операции вывода выполняются на
конец файла, добавление
Удалить ios::app
, и вы сможете написать "my"
над "ll"
в `» helloworld «.
Обратите внимание, что вы не сможете «вставить» что-то в файл — единственный способ добиться этого — прочитать исходный файл и записать новые данные в новый файл [или прочитать все, что есть после того, как вы захотите изменить, вставьте нужный текст и запишите части, которые хотите после измененного бита].
Других решений пока нет …