Jak wysłać NULL do pliku binarnego?

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.

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

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":

int main()
{
    ofstream plik("/home/krzaq/foo.txt");
    string foo{0,0,0};
    plik << foo;
}
> hexdump -C foo.txt
00000000  00 00 00                                          |...|
00000003
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ą?

2

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

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ą.

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.

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