Jak wysłać NULL do pliku binarnego?

Jak wysłać NULL do pliku binarnego?
crassman22
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 21
0

Jak w C++ zapisać NULL (0x00) w pliku binarnym?
Korzystam z fstream, a wysyłam strumieniem do uchwytu np. plik >> string.
Niestety NULL'e zostają zamienione na 0x20.

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
2

plik >> string.

Chyba raczej plik << string.

Nie wiem dlaczego powyższe by miało nie działać, ale w razie czego zawsze jest ifstream::write

Kopiuj
int main()
{
    ofstream plik("/home/krzaq/foo.txt");
    string foo{0,0,0};
    plik.write(foo.data(), foo.size());
}

Pierwsze rozwiązanie też "u mnie działa":

Kopiuj
int main()
{
    ofstream plik("/home/krzaq/foo.txt");
    string foo{0,0,0};
    plik << foo;
}
Kopiuj
> hexdump -C foo.txt
00000000  00 00 00                                          |...|
00000003
crassman22
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 21
0

Dzięki ;) Teraz jeszcze sprawa, że wypełniam tablicę 512 bajtów wartościami, przesyłam ją do pliku binarnego, a ten na końcu dopisuje jakieś śmieci. cin.clear(); nie pomaga. Skąd się one biorą?

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
2

Szklana Kula mówi, że w kodzie jest błąd, konkretnie w linii 42.

tajny_agent
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1340
0
crassman22 napisał(a):

Jak w C++ zapisać NULL (0x00) w pliku binarnym?
Korzystam z fstream, a wysyłam strumieniem do uchwytu np. plik >> string.
Niestety NULL'e zostają zamienione na 0x20.

Plik binarny i string? Trochę mnie się to kłóci ze sobą.

MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
4

Klasyczny przypadek problemu XY http://xyproblem.info/
Robisz X źle, wydaje ci się, że trzeba zrobić Y i pytasz o Y, gdy tymczasem problemem jest X.
Zacznij od początku opisz dokładnie co ma robić twój program, jaką funkcjonalność próbujesz zrealizować.

I na miłość boską pokaż trochę kodu. Jak nie umiesz napisać dobrego pytania, to wklej kod.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.