Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Почему не открывается файловый поток...


Автор: Ulysses4j 20.12.2007, 14:04
Может быть, у кого-то возникнут идеи, почему такая вещь может выбрасывать исключение:
Код
std::fstream file;
/*... возможны открытия-закрытия потока в различных режимах (чтение, запись), но они парные */
file.open(name.c_str(), std::ios::out);
if (! file.is_open()) throw std::runtime_error("File not found");

Перменная name типа std::string корректно инициализирована. Доподлинно известно, что файла с именем name на тот момент не существует. Однако, в режиме out он должен создаваться и открываться.

Если между объявлением переменной и приведенным вызовом open ничего нет, то все отлично работает (файл открывается). Фактически, вопрос заключается в том, может ли и если да, то как, влиять история использования переменной file на работу второй части приведенного фрагмента кода.

Советы использовать переменную типа ostream не принимаются, потому что приведенный пример суть упрощение реальной ситуации, когда нужна именно многоцелевая переменная (она используется в реализации некоторой более высокоуровневой обертки потока).

Автор: Ulysses4j 20.12.2007, 14:35
Вопрос решился. Имя файла name совпадало с уже существовавшей в текущем каталоге папкой.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)