2016-08-18 7 views
1

Я столкнулся с проблемой потока, и программа не может открыть файл, который я хочу написать. Минимальный, полный и изменяемый код показан следующим образом:ofstream: невозможно открыть файл

#include <cstdio> 
#include <fstream> 

using namespace std; 

int main(){ 

    string root_path = "E:\\160818\\"; 
    string file_path = root_path + "haar_data.txt"; 

    ofstream haar_file(file_path.c_str()); 

    if(!haar_file) // < -------- File cannot be open 
    { 
     cout<<"Error opening file for writing\n"; 
     return 1; 
    } 
    haar_file.close(); 

    return 0; 
} 

Мой компилятор VS2008. Выход на экране:

Ошибка открытия файла для записи.

Какая ошибка? Я хочу открыть этот файл, чтобы что-то написать.

+1

Существует ли файл haar_data.txt или вы хотите его создать? Позволяет ли ваша программа создавать/изменять файлы по этому пути? (Возможно, запустите как администратор или что-то в этом роде) (О, возможно, замените \\ на /, не уверен, что он работает в Windows, но стоит попробовать) – bisthebis

+2

У вас нет разрешения на создание или открытие файла. Просто! –

+1

BTW 'main' возвращает' int', всегда. –

ответ

3

Я скомпилировал ваш код и использовал его, он сработал.


Обратите внимание, что вы не включили iostream в вашем коде при условии поэтому я должен был добавить его из выражения "COUT. Обратите внимание, что с C++ 11 вам не нужно использовать .C_str(), чтобы открыть файл. Обратите внимание, что если ваш файл не существует, поскольку вы используете streamstream (открывается с помощью ios :: out), ваш файл будет создан в любом случае. Вы используете права администратора? Правильно ли указан путь (имя папки ошибка?)

+0

Да, имя моей папки содержит китайский, что приводит к этой проблеме. – Lee

+0

Как использовать «права администратора» в этом случае для записи в файл? Будет ли это просто «sudo./Executable» во время выполнения или это что-то, что нужно сделать в коде? –

Смежные вопросы