Odczyt pliku binarnego C++

Odpowiedz Nowy wątek
2019-01-11 00:16
0

Cześć, mam już napisany kod który działa (tak mi się wydaję), ale nieco się przy nim pogubiłem.

    char *bufor1 = new char[rozmiar1]();
    char *bufor2 = new char[rozmiar2]();

    streamsize rozmiarbufora = 50;

    while (plik1.good() || plik2.good()){
        plik1.read(bufor1, rozmiarbufora);
        plik2.read(bufor2, rozmiarbufora);
    }

Tak więc, najpierw alokuje odpowiednią ilość miejsca w pamięci [romiar1/rozmiar2 - odpowiada ilosci bajtow pliku, którą wcześniej obliczyła odpowiednia funkcja], później deklaruje ilość bajtów wczytanych do tego bufora(?) i tu wydaje mi się, że rozmiar bufora również powinien być zależny od rozmiaru całego pliku, ale nie jestem pewny. A dalej w pętli wczytuje tylko dane do wcześniej przygotowanego bufora. Czy dobrze to rozumiem i czy jest to poprawna metoda odczytywania pliku binarnego?

"poprawna metoda" zależy od tego co będziesz chciał z tymi danymi zrobić. Przyda się także informacja czy plik nie ma jakiejś dużej objętości oraz czy wymagana jest jakaś ekstremalna wydajność. - Mokrowski 2019-01-11 10:42

Pozostało 580 znaków

2019-01-11 10:33
0

Zainteresuj się Bracie klasą std::fstream


"Sugeruję wyobrazić sobie Słońce widziane z orbity Merkurego, a następnie dupę tej wielkości. W takiej właśnie dupie specjalista ma teksty o wspaniałej atmosferze, pracy pełnej wyzwań i tworzeniu innowacyjnych rozwiązań. Pracuje się po to, żeby zarabiać, a z resztą specjalista sobie poradzi we własnym zakresie, nawet jeśli firma mieści się w okopie na granicy obu Korei."
-somekind,
konkretny człowiek-konkretny przekaz :]

Pozostało 580 znaków

2019-01-11 10:45
0

Hm, przecież używa fstream.

Co do pytania to przy plikach binarnych nie ma wielkiej filozofii. Definiujesz sobie format i na jego podstawie wczytujesz/zapisujesz dane. Zamiast gołych tablic użyj std::vector
No i przyda się też nagłówek <cstdint>

Pozostało 580 znaków

2019-01-11 17:15
0
while (plik1.good() || plik2.good()){

W takich wypadkach and zamiast or.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0