fstream open是否有较大文件的问题?

时间:2011-11-07 18:42:55

标签: c++ unix fstream

我正在尝试使用以下代码打开/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试图将整个文件加载到内存中?

2 个答案:

答案 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);