• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak umieścić dane w pliku w konkretnym miejscu

Object Storage Arubacloud
+1 głos
353 wizyt
pytanie zadane 29 czerwca 2015 w C i C++ przez Phobos Użytkownik (720 p.)

Jak zapisać do pliku jakieś dane ale w konkretnym miejscu w programie? Próbowałem użyć ostream& seekg() ale nie udało się. http://wklej.org/id/1748981/

gdy robię tak jak w przykładzie wyżej, to wszystkie dane są wpierw usuwane z pliku a potem po prostu w pierwszej linijce jest umieszczany tekst. Myślałem że opcja ios::app załatwi sprawę, ale app przesuwa wskaźnik pliku na ostatnią linijkę a nie podmienia znaki.

Pozdrawiam i proszę o pomoc.

2 odpowiedzi

+1 głos
odpowiedź 30 czerwca 2015 przez MrWeb Stary wyjadacz (10,200 p.)

Kod który podałeś jest błędny - jeśli chcesz poruszać się po pliku to użyj funkcji seekp w taki sposób:

int main()
{
  std::fstream plik;
  plik.open("file.txt", std::ios::out);

  plik << "___________________________________________________________\n";

  plik.seekp(5, std::ios::beg); //przesun kursor piec znakow od poczatku pliku

  plik << "-";

  plik.flush();
  plik.close();
}

 

komentarz 30 czerwca 2015 przez Phobos Użytkownik (720 p.)
Dzięki Mr za odpowiedź, jednakże nie wszystko działa tak jak powinno. Tekst co prawda zapisuje sie na tej piątek pozycji od początku, ale jeśli wcześniej mam jakiś plik tekstowy zapełniony znakami, to zamiast dopisać te znaki albo podmienić to cały plik tekstowy jest wcześniej usuwany i zostaje tylko ten napis z przesunięciem..
komentarz 30 czerwca 2015 przez Phobos Użytkownik (720 p.)
Jupiiiii udało się, wiem co było nie tak. Dla wszystkich, których by to interesowało, dodam że aby dane zostały nadpisane a nie żeby cały plik tekstowy się usunął konieczne jest otworzenie pliku w trybie nie tylko do zapisu ale także do odczytu. Czyli piszemy  plik.open("plik.txt", ios::out | ios::in);

A jak zrobić aby dane zostały dopisane na samym początku ale bez nadpisywania tego co jest już na początku, tylko żeby pisało przed danymi?
komentarz 1 lipca 2015 przez Gariw Użytkownik (920 p.)
Użyj seekp tak jak powyżej, tyle że zamiast 5 daj 0.
0 głosów
odpowiedź 30 czerwca 2015 przez niezalogowany

Powiedz mi czy dobrze rozumiem (twoja wypowiedź jest nieco chaotyczna):

Masz plik i jakieś w nim dane, powiedzmy że ustawienia do gry, np:

width = 10

height = 20

I chcesz za pomocą programu podmienić tylko 1 wartość (np chcesz aby width było równe 100) bez konieczności usuwania i tworzenia całego pliku?

komentarz 30 czerwca 2015 przez Phobos Użytkownik (720 p.)
Dobrze rozumisz.

Podobne pytania

0 głosów
2 odpowiedzi 6,581 wizyt
pytanie zadane 13 lipca 2015 w Rozwój zawodowy, nauka, praca przez Mateusz Analityk Stary wyjadacz (13,710 p.)
0 głosów
1 odpowiedź 439 wizyt
pytanie zadane 2 maja 2017 w C# przez daroczaro Nowicjusz (240 p.)
0 głosów
2 odpowiedzi 489 wizyt

92,554 zapytań

141,399 odpowiedzi

319,535 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...