2015-07-21 1 views
0
#include <iostream> 
#include <fstream> 
using namespace std; 

int main() 
{ 
    ifstream file; 
    file.open("./cp.txt"); 
    if(file.good()) 
    { 
     cout << "done!"; 
    } 
    else 
    { 
     cout << "fail"; 
    } 
    return 0; 
} 

Почему мой код не поддерживает файл cp.txt? он находится в папке проекта. Я использую gnu/linux. как открытый, я имею в виду, что программа откроет его в каком-то текстовом редакторе i.e :. листовая панельfile.open() на linux не открывает мой файл, как его решить?

+1

Вы пытались удалить добавленный '. /'? – erip

+0

да, но это не сработало. подсказка «fail». – sebek

+2

Вы открываете файл в своей программе для чтения, он не открывается в каком-то редакторе ... –

ответ

0

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

ofstream ofile; 
ofile.open("./cp.txt"); 
ofile.close(); 

если вы получаете выход done! то поиск файла.

+0

Возможно, проще просто добавить в программу 'std :: cout << get_current_dir_name() << std :: endl;'. –

3

как открытое, я имею в виду, что программа откроет его в каком-то текстовом редакторе i.e :. листовая панель

Это не произойдет.

При открытии объекта ifstream это означает, что файл открыт для чтения этим объектом, это не означает, что текстовый редактор запускается и отображает файл!

Может быть, что вы хотите:

system("leafpad cp.txt"); 

system функция запускает другую команду, в этом случае она запускает команду для запуска leafpad с файлом в качестве аргумента.

Обратите внимание, что файл будет найден в текущем рабочем каталоге вашей программы, который не совпадает с вашим «каталогом проектов». Если вы не знаете, что представляет собой текущий рабочий каталог, когда ваша программа запускается, вам необходимо предоставить абсолютный путь к файлу, а не относительный путь, например cp.txt