我正在尝试使用
打开文件27 string tline;
28 ifstream finp; // input file
29 ifstream dinp; // data files
30
31 finp.open(argv[1]);
32
33
34 cout << "finp.good() = " << finp.good() << endl;
35 cout << "finp.bad() = " << finp.bad() << endl;
36 cout << "finp.fail() = " << finp.fail() << endl;
我最终输出
finp.good() = 0
finp.bad() = 0
finp.fail() = 1
现在,除了它是一个内部逻辑问题之外,我找不到任何可能导致此问题的好文档。我该怎么做才能纠正这个问题?
如果它有帮助,我在linux上运行,我需要包括<cstring>
和<cstdlib>
,而在OSX上运行时我不需要这样做。这可能是问题吗?如果是的话,我该如何纠正呢?
答案 0 :(得分:2)
fail()
将返回1并且失败。例如,如果文件中的下一个字符不是数字,并且您尝试读取int
,则会设置failbit,并且fail()
将返回1.尝试进行任何转换你已经在文件的末尾也将设置failbit。
fail()
已设置,则 badbit
也会返回1。这设置为表示文件本身存在严重问题,而不仅仅是无法从文件中读取某些特定数据。
答案 1 :(得分:1)
原谅我,我犯了一个简单的错误。当我将我的源文件移植到linux系统时,我也移植了一个脚本。我将可执行文件与脚本混淆,脚本中有一个硬编码的文件名,不在目录中。
基本上,我不小心试图读取不存在的文件!