Программа VS C ++ работает только при запуске .exe из папки? [не VS отладка] - PullRequest
0 голосов
/ 31 августа 2009

Вывод из отладки:

Файл открыт ...

Содержимое файла:

Вывод из .exe (запускается двойным щелчком из / project / debug):

Файл открыт ...

Содержание файла: строка 1 line2 так далее. . .

Исходный код:

#include <iostream>
#include <fstream>
#include <regex>
#include <string>
#include <list>

using namespace std;
using namespace tr1;


int main()
{
    string line;
    list<string> dataList;

    ifstream myFile("test_data.txt");
    if (! myFile)
    {
        cout << "Error opening file. \n";
        return 0;
    }
    else
    {
        cout << "File opened... \n";
        while( getline(myFile, line) ) {
            dataList.push_back(line);
        }
    }

    cout << "\n\n File contents:";

    list<string>::iterator Iterator;
    for(Iterator = dataList.begin(); 
            Iterator != dataList.end();
            Iterator++)
    {
        cout << "\t" + *Iterator + "\n";
    }




    getchar();
    return 1;
}

спасибо за вашу помощь!

Теперь я понимаю проблему, спасибо. очевидно, это также показывает, что этот метод обработки ошибок для файлов бесполезен. Я также исправил это. Еще раз спасибо.

Ответы [ 3 ]

4 голосов
/ 31 августа 2009

То, как вы закодировали эту строку:

ifstream myFile("test_data.txt");

означает, что код ищет файл в текущем рабочем каталоге.

Когда вы запускаете за пределами отладчика, это будет /project/debug (в вашем случае), где файл предположительно находится.

Когда вы запустите внутри отладчика, который (вероятно) будет \project, который не будет содержать файл.

Вам потребуется либо две копии файла, либо жесткий код полного пути к файлу, либо какой-либо способ указания файла во время выполнения.

2 голосов
/ 31 августа 2009

Вы также можете указать рабочий каталог (где он будет искать test_data.txt) на странице свойств Debug для вашего проекта в VC.

1 голос
/ 31 августа 2009

Ваш .exe обычно запускается из Debug/../ при запуске из Visual Studio. Когда вы дважды щелкаете по нему, он запускается в «Debug /». 1002 *

Либо переместите test_data.txt, либо сделайте так, как большинство разработчиков, и создайте выходной каталог, куда ваши двоичные файлы и данные экспортируются перед запуском.

...