我正在尝试使用以下代码打开/usr/share/dict/words
:
fstream f;
f.open("/usr/share/dict/words");
// why is this returning false?
bool open = f.is_open();
我想知道为什么f.is_open()
返回false?
更多信息:当我尝试包含大约20行f.is_open()
的较小测试文件时,返回true。也许f.open
试图将整个文件加载到内存中?
答案 0 :(得分:6)
它不起作用,因为您正在打开文件进行读写。除非您以root用户身份运行,否则您无权写入此文件。
如果你打开它只是为了阅读它将起作用:
f.open("/usr/share/dict/words", fstream::in);
答案 1 :(得分:4)
这样声明了fstream.open()函数:
void open (const char *filename,
ios_base::openmode mode = ios_base::in | ios_base::out );
即。它打开文件进行读写。除非您以root用户身份运行,否则您的进程可能无权打开该文件进行写入。打开它只能用
阅读 f.open("/usr/share/dict/words", ios_base::in);