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

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

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

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

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

Содержимое файла: строка1 строка2 и т. Д. .

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

#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;
}

Спасибо за помощь!

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

0
Nona Urbiz 31 Авг 2009 в 01:44

3 ответа

Лучший ответ

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

ifstream myFile("test_data.txt");

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

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

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

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

4
ChrisF 31 Авг 2009 в 01:50

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

2
Alan 31 Авг 2009 в 01:56

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

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

1
Jonas Byström 31 Авг 2009 в 01:51