> C++では熟考されてない雰囲気

これの意味は、バイナリ入出力では「型のビット表現」そのままを入出力するしかできないので、
型の大きさ(char単位の大きさ)、エンディアン、浮動小数点なら各ビットの意味など
判別・読み書き時にC++ライブラリの支援がない(支援ができない)。

そもそも、読み書きすべきバイナリデータが、C++だけで使われるとは限らない。
アマゴサ星系のエル・オーリアン人が、彼らの特殊言語で読み書きするかもしれない。

バイナリで扱うなら、ファイルの先頭あたりにUTFのBOMのようなものを入れるしかない。
「安全」さを求めるならテキスト入出力を使うべきなんだろう。

非現実的だが。

>>538
その問題は、read((char*)&a, sizeof(a))の問題ではなく、バイナリ入出力自体の問題じゃないかな。