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 >> 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
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ą?
Szklana Kula mówi, że w kodzie jest błąd, konkretnie w linii 42.
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ą.
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.