Mam sobie taką funkcję:
void WriteStringBinary(string StringToWrite, const char* filePath){
int ASCII;
ofstream stream(filePath, ios::binary);
for(int i=0;i<StringToWrite.length()+1;i++){
ASCII = StringToWrite[i];
stream.write(reinterpret_cast<const char*>(&ASCII),sizeof(ASCII));
}
}
koncepcją było zapisywanie stringów jako znaki ASCII binarnie. Tzn. każdy pojedynczy znak zamieniałoby się na int reprezentującego ten znak (jako ASCII) i ten int byłby zapisywany. Ale wynikiem jest (zakładając, że string to "something").
sNULoNULmNULeNULtNULhNULiNULnNULgNUL (gdy był typ short, to było somethingNUL)//(ostatnie NUL rozumiem, bo to \0). Nie da się tego zrobić, czy to dlatego, że castuje się to na chara, który najwyraźniej przyjmuje tego inta jako ASCII (w sensie tak jakby napisać char = int). Gdy między ASCII = [...] i stream.write([...]); wstawiłem cout<<ASCII to normalnie wypisało mi znaki ASCII (z zerem na końcu jako \0) i w ten sposób miało to zapisać..