2014-10-05 6 views
0

Я написал небольшую программу VC++, используя VS2012, и попытался прочитать текстовый файл. Я помещаю файл в папку выпуска. Однако я не могу прочитать файл до использования абсолютного каталога файлов. Однако я не могу найти полезную информацию в Интернете. Код такой какПочему моя программа на C++ может читать только абсолютный каталог, но не файл в той же папке?

#include<iostream> 
#include<fstream> 
#include<string> 

using namespace std; 

int main() 
{ 
    cout<<"Hello World!"<<endl; 
    string test; 
    ifstream myfile; 
    myfile.open("E:\\Glus\\Project2\\Release\\bunny.txt"); 
    if(myfile.is_open()) 
    { 
     string s0,s1; 
     int x0, x1; 
     myfile>>s0>>x0; 
     cout<<s0<<x0<<endl; 
     myfile>>s1>>x1; 
     cout<<s1<<x1<<endl; 
    } 
    else 
    { 
     cout<<"Error in reading file!"<<endl; 
    } 
    myfile.close(); 
    cin>>test; 
    return 0; 
} 

Спасибо!

+1

Что такое каталог, в котором вы сказали VS, чтобы запустить вашу программу? Это не обязательно тот же каталог, в котором живет файл '.exe'. –

+0

По умолчанию VS использует папку проекта в качестве текущего каталога, тогда как исполняемые файлы создаются для '.. \ Win32 \ Release' и т. Д. –

ответ

2

Путь не относится к исполняемому файлу, а относится к текущему каталогу (см. _getcwd).

В случае, если вы запускаете приложение из VC, попробуйте

"..\\Release\\bunny.txt" 

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

+0

спасибо, он работает – litaoshen

0

Visual Studio не сохраняет вашу программу именно там, где вы запустите его, на самом деле это экономит его в папку в папке проекта с одноименным названием вашего проекта вы можете получить текущий рабочий путь, используя следующую команду:

system("cd"); 

он может решить вашу проблему, чтобы найти ваши файлы.

+0

Он просто выводит текущий каталог, если я добавил его перед чтением файла, но без изменения в текущей папке выпуска, хотя – litaoshen

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

  • Нет связанных вопросов^_^