Mam problem z zapisem danych do pliku już istniejącego i mającego już jakieś dane. Zapisując dane do pliku usuwają mi się dane, które tam już są. Tak jakby działał specyfikator ios::trunc choć używam ios:ate. Oto kod:
Nie można jednocześnie używać operatora ios::in (odczyt danych) i ios::out (zapis danych).
Operatorem umożliwiającym dopisanie danych do pliku jest ios::app. Używasz biblioteki fstream, ale dla odczytu danych stosujemy klasę ifstream, a do zapisu ofstream, dlatego Tój kod powinien wyglądać tak:
Problemem wynika prawdopodobnie z klasy TSzablon_zapisu.
Przeprowadziłem testy z Twoim kodem u siebie w środowisku C++ BUilder 2007. Nie znam Twojej struktury TSzablon_zapis, więc użyłem własnej przykładowej:
______________ PS. ios::in, ios::out itd. nie są operatorami - to flagi, zwykłe wartości liczbowe (enum), a fstream nie jest biblioteką, tylko klasą pochodną od iostream.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
W Symfonii C++ jest napisane: tom 3, str.644 (dotyczy funkcji write):
Podobnie jak przy funkcji read, także i tutaj dodam, że jeśli program ma wykonywać wyjątkowo wiele operacji pisania binarnego - dobrze jest rozważyć posłużenie się klasą streambuf i jej pochodnymi.