私は、C++ io を使い始めてはならないことを知っていました。「型の安全性」の議論全体が赤ニシンです (これが最も差し迫った問題の 1 つであることに気付いた人はいますか?) 。とにかく、私はそうしましたが、ifstreams と FILE*s および単純な古いファイル記述子の奇妙な違いを発見しました: ifstreams はデバイスから読み取ることができません。理由が思いつく人いますか?
const char* path = "/dev/disk3";
char b;
// this works
FILE* f= fopen(path, "rb");
int i = fread(&b, 1, 1, f); // returns 1, success!
// this does not work
ifstream cf(path, ios::binary);
cf.read(&b, 1);
bool good = cf.good(); // returns false, failure.