Вывод из отладки:
Файл открыт ...
Содержимое файла:
Вывод из .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;
}
Спасибо за помощь!
Теперь я понимаю проблему, спасибо. очевидно, это также показывает, что этот метод обработки ошибок для файлов бесполезен. Я тоже исправил это. Еще раз спасибо.
3 ответа
Как вы закодировали эту строку:
ifstream myFile("test_data.txt");
Означает, что код ищет файл в текущем рабочем каталоге.
Когда вы работаете вне отладчика, это будет /project/debug
(в вашем случае), где предположительно находится файл.
Когда вы запускаете отладчик, это (вероятно) будет \project
, который не будет содержать файл.
Вам потребуется либо две копии файла, либо жестко запрограммировать полный путь к файлу, либо иметь какой-то способ указать файл во время выполнения.
Вы также можете указать рабочий каталог (где он будет искать test_data.txt) на странице свойств Debug для вашего проекта в VC.
Ваш .exe обычно запускается из Debug/../
при запуске из Visual Studio. Когда вы дважды щелкаете по нему, он запускается в «Отладке /».
Либо переместите свой test_data.txt
, либо сделайте, как большинство разработчиков, и создайте выходной каталог, в который ваши двоичные файлы и данные будут экспортированы перед запуском.
Похожие вопросы
Новые вопросы
c++
C ++ - это язык программирования общего назначения. Первоначально он был разработан как расширение C и имеет аналогичный синтаксис, но теперь это совершенно другой язык. Используйте этот тег для вопросов о коде (который должен быть) скомпилирован с помощью компилятора C ++. Используйте тег для конкретной версии для вопросов, связанных с конкретной версией стандарта [C ++ 11], [C ++ 14], [C ++ 17], [C ++ 20] или [C ++ 23] и т. Д. .