Есть ли у fstream open проблемы с большими файлами? - PullRequest
0 голосов
/ 07 ноября 2011

Я пытаюсь открыть /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 ]

6 голосов
/ 07 ноября 2011

Не работает, потому что вы открываете файл для чтения и записи.Если вы не работаете от имени пользователя root, у вас нет прав на запись в этот файл.

Если вы откроете его только для чтения, оно будет работать:

f.open("/usr/share/dict/words", fstream::in);
4 голосов
/ 07 ноября 2011

Функция 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);
...