我知道我不应该开始使用 c++ io,整个“类型安全”论点是一个红鲱鱼(有人真的发现这是他们最紧迫的问题之一吗?)。无论如何,我做到了,并发现了 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.