Załóżmy że potrzebny jest mi program który szuka konkretnych wartości w pliku i zamienia je na inne (lub przepisuje w inne miejsce). Z racji rozmiarów pliku nie można (nie powinno się) go wczytać w całości do pamięci programu.
Czy ktoś próbował używać strumieni dwukierunkowych dla zapisu\odczytu plików? Nigdzie nie mogę znaleźć informacji na temat czegoś takiego, ale z doświadczeń wynika że to działa.
Zrobiłem coś takiego:
fstream file_str;
file_str.clear();
file_str.open( str, ios::in|ios::out|ios::binary|ios::ate ); // read-write binary mode, go to EOF
if( file_str.good() )
{
int file_size = file_str.tellg(); // get pos (EOF)
file_str.seekg(0); // back to file start
(...)
Swego czasu to działało, ale miałem problemy z poruszaniem się po pliku. Zauważyłem zę po zapisie musiałem używać metod dla strumienia wyjściowego, po odczycie tych dla wejściowego. Trochę skomplikowałem program i w ogóle przestało działać...
Wie ktoś jak poprawnie się obsługiwać takim dwukierunkowym strumieniem?