C++ udostępnia bibliotekę
Napisz plik binarny w języku C++
Aby zapisać dane w pliku binarnym przy użyciu języka C++, stosuje się metodę write(). Funkcja ta zapisuje określoną liczbę bajtów do wyznaczonego strumienia, zaczynając od lokalizacji wskaźnika „put”. Jeśli wskaźnik „put” znajduje się na końcu, plik jest rozszerzany. Jednakże nowe dane zastępują istniejące znaki, jeśli wskaźnik znajduje się w pliku. W przypadku wystąpienia błędu podczas zapisu, strumień jest oznaczany jako będący w stanie błędu. Przejdźmy teraz do przykładów, aby dowiedzieć się, jak pisać w pliku binarnym przy użyciu prostych i wbudowanych funkcji C++.
Metoda 1: Zapisywanie plików binarnych z danymi strukturalnymi
W wielu przypadkach może być konieczne zapisanie danych strukturalnych, takich jak struktury niestandardowe, do pliku binarnego. Rozważmy przykład zawierający zapis osoby, który zawiera imię i nazwisko, wzrost i wiek osoby. Zobacz następujący podany kod i spójrz na wyjaśnienie:
#include
#include
struktura Osoba {
zwęglać nazwa [ pięćdziesiąt ] ;
wew wiek ;
podwójnie wysokość ;
} ;
wew główny ( ) {
st :: poza strumieniem plik wyjściowy ( „ludzie.bin” , st :: iOS :: dwójkowy ) ;
Jeśli ( ! plik wyjściowy. jest otwarte ( ) ) {
st :: cer << „Błąd! Nie można otworzyć pliku do zapisu!” << st :: koniec ;
powrót 1 ;
}
Osoba Osoba 1 = { „Kalsoom Ilyas” , 25 , 1,75 } ;
Osoba Osoba 2 = { „Kalsoom Bajwa” , 30 , 1,68 } ;
plik wyjściowy. pisać ( reinterpretuj_cast < zwęglać *> ( & osoba 1 ) , rozmiar ( osoba 1 ) ) ;
plik wyjściowy. pisać ( reinterpretuj_cast < zwęglać *> ( & osoba2 ) , rozmiar ( osoba2 ) ) ;
plik wyjściowy. zamknąć ( ) ;
st :: cout << „Rekord osoby został pomyślnie zapisany w pliku binarnym.” << st :: koniec ;
powrót 0 ;
}
Oto podział kodu z konkretnymi szczegółami. Program rozpoczyna się od zdefiniowania własnej struktury o nazwie „Osoba”. Zawiera trzy pola: imię, wiek i wzrost. Szczegóły tych pól są następujące:
- nazwa: Ciąg znaków do przechowywania imienia i nazwiska osoby (do 50 znaków)
- wiek: Liczba całkowita przechowująca wiek osoby
- wysokość: Double do przechowywania wzrostu osoby
Po zdefiniowaniu struktury „Osoba” uruchamiana jest funkcja główna będąca punktem wejścia do programu. Pierwsza linia programu głównego otwiera plik o nazwie „people.bin”. Używamy „std::ofstream”, aby utworzyć plik o nazwie „people.bin” do zapisywania danych w formacie binarnym. Bardzo ważne jest sprawdzenie, czy plik otwiera się pomyślnie. W przeciwnym razie zostanie wyświetlony komunikat o błędzie i program zostanie zatrzymany. Dlatego za pomocą warunku „if” i funkcji is_open() sprawdzamy, czy plik otworzył się pomyślnie, czy nie.
Tutaj tworzone są dwa obiekty „Osoba”. Definiujemy dwie zmienne „osoba1” i „osoba2” typu „Osoba”. Przypisujemy zmienne wartości nazwy, wieku i wzrostu dla „Kalsoom Ilyas” i „Kalsoom Bajwa”.
Teraz, gdy mamy dane do zapisania w pliku binarnym, wykonajmy właściwą funkcję za pomocą funkcji write(). Używamy „outFile.write” do zapisania zawartości każdego obiektu „Person” do pliku. Funkcje „reinterpret_cast
Po zapisaniu danych do pliku bardzo ważne jest jego prawidłowe zamknięcie, aby żadne dane nie uległy utracie w wyniku jakiejkolwiek innej funkcji. Używamy metody outFile.close(), aby zwolnić zasoby powiązane z plikiem i zapewnić poprawność zapisu danych. Na koniec drukujemy komunikat potwierdzający pomyślny zapis danych do pliku binarnego.
Jeśli wyjaśnimy ten przykład prościej, wyobraźmy sobie specjalny notatnik, w którym można przechowywać informacje o ludziach jedynie w tajnym języku. Kod ten tworzy schemat organizowania informacji (imię, wiek, wzrost). Otwiera notatnik, wypełnia profile dwóch osób, tłumaczy informacje na tajny język i starannie je wpisuje. Następnie bezpiecznie zamyka notebook, zachowując profile do wykorzystania w przyszłości. Zapoznaj się z wynikami programu podanymi na poniższym zrzucie ekranu:
Metoda 2: Zapisywanie liczb całkowitych do pliku binarnego
W tej metodzie tablica liczb całkowitych jest zapisywana w pliku binarnym o nazwie „integers.bin”. „reinterpret_cast
#include
wew główny ( ) {
st :: poza strumieniem plik wyjściowy ( 'liczby całkowite.bin' , st :: iOS :: dwójkowy ) ;
Jeśli ( ! plik wyjściowy. jest otwarte ( ) ) {
st :: cer << „Błąd! Nie można otworzyć pliku do zapisu!” << st :: koniec ;
powrót 1 ;
}
wew liczby [ ] = { 42 , 99 , - 1 , 0 } ;
plik wyjściowy. pisać ( reinterpretuj_cast < zwęglać *> ( liczby ) , rozmiar ( liczby ) ) ;
plik wyjściowy. zamknąć ( ) ;
st :: cout << „Podane liczby całkowite pomyślnie zapisano do pliku binarnego.” << st :: koniec ;
powrót 0 ;
}
Oto podział kodu z konkretnymi szczegółami:
„#include
Następna linia to „int number[] = {42, 99, -1, 0};” definiuje tablicę o nazwie „numbers” zawierającą liczby całkowite 42, 99, -1 i 0. „outFile.write(reinterpret_cast
Wniosek
Pisanie plików binarnych w C++ jest kluczową umiejętnością pozwalającą na efektywną obsługę różnych typów danych. Podczas tej eksploracji pisania plików binarnych w C++ dowiedzieliśmy się, jak można wykorzystać klasę „ofstream” do wydajnej obsługi danych binarnych. Niezależnie od tego, czy mamy do czynienia z prostymi liczbami całkowitymi, czy danymi strukturalnymi przy użyciu niestandardowych struktur, proces ten obejmuje otwarcie strumienia pliku, zapisanie danych w formacie binarnym, a następnie zamknięcie pliku. Ta możliwość zapewnia programistom C++ elastyczność pracy z różnorodną gamą binarnych typów danych, przyczyniając się do wszechstronności języka w aplikacjach, od programowania na poziomie systemu po przetwarzanie multimediów.