Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

zapis binarny z kontenera"vector" do pliku

ptaq1506 20 Mar 2012 17:34 1462 5
  • #1 20 Mar 2012 17:34
    ptaq1506
    Poziom 6  

    mam taki kod, i wszystko dziala ok, ale chcialbym zapisywac obiekty ktore przechodzuje w kontenerze "vector" i tutaj zaczyna sie problem Kod:

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    prubowalem zamiast "file" przekazac funkcji iterator vectora (*it) ale niestety nie tedy droga. Zdaje sobie sprawe ze rozwiazanie jest bardzo proste ale jakos sie na tym zawiesilem ;/ prosze o pomoc. Kod:
    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    0 5
  • #2 20 Mar 2012 21:28
    krru
    Poziom 32  

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Ja bym jednak tak nie robił - zbyt jest to uzaleznione od typu kontenera. Główna zaleta kontenerów z STL polega na tym, że używa się ich prawie jednakowo i w razie czego można łatwo podmienić np. vector na list albo coś podobnego. Zwykła pętla iteratorem i już kod nie jest zależny od rodzaju kontenera.

    0
  • #3 20 Mar 2012 21:53
    ptaq1506
    Poziom 6  

    dzieki za odpowiedz, powiesz mi jeszcze jak odczytac taki plik i zapisac spowrotem do vectora ?

    0
  • #4 20 Mar 2012 22:10
    Dariusz Bismor
    Poziom 17  

    Popieram poprzednika w całej rozciągłości - tak się nie robi! Ponadto, co Ci ten tryb binarny, który dodatkowo w systemach Posix-owych nic nie robi? Użycie write() nie ciągnie za sobą konieczności użycia trybu "binary".

    Zawsze zapisując dane do pliku należy serializować! Wyobraź sobie, że Twój program ktoś skompiluje i uruchomi na systemie 32-bitowym, a ktoś inny na 64-bitowym, a potem będą się chcieli wymienić plikami z danymi. Wszystkie typy danych mogą mieć inny rozmiar!

    I jeszcze jeden drobiazg: jeżeli nie ma specjalnych powodów, nie używaj float, lecz zawsze double (powodem użycia float może być np. zajętość pamięci lub szybkość obliczeń na niektórych systemach wbudowanych).

    HTH,
    Dariusz

    0
  • #5 20 Mar 2012 22:17
    ptaq1506
    Poziom 6  

    zapamietam :), wiesz mi to nie potrzebne ale w szkole sobie tak wymyslili ;/ powiedzcie mi jeszcze prosze jak sprawdzic czy odczytano caly plik, w momecie kiedy mam kilka obiektow zapisanych binarnie ???

    0
  • Pomocny post
    #6 20 Mar 2012 22:46
    Dariusz Bismor
    Poziom 17  

    Jeżeli masz siłę walczyć z niekompetentnymi nauczycielami - walcz!

    Co do czytania obiektów z pliku, zawsze obowiązuje zasada wczytywania tak długo, aż przy kolejnym odczycie dostaniesz błąd stanu strumienia.

    HTH,
    Dariusz

    0