【发布时间】:2008-10-06 11:01:24
【问题描述】:
我知道我不应该开始使用 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.
【问题讨论】:
-
FWIW,我认为您的题外话“大谎言”评论可能会阻止知识渊博的人回答这个问题。
-
操作系统和编译器版本可能会有所帮助...
-
我同意克里斯托弗·约翰逊的观点。我不知道答案,但我知道我不会觉得有必要去寻找它。
-
好吧,也许“大谎言”有点过于情绪化了。让我们看看我是否可以改变它。操作系统是豹10.5.5,gcc vers = 4.0.1
-
我有个不错的主意。但我不喜欢这种诱饵。