2015-10-05 5 views
-2
string iName, oName; //input and output file names, respectively 
double avgIn; 

cout << "Enter file name for input: "; 
getline(cin, iName) || die("Could not read input file name"); 
if (iName.empty()) 
    iName = DEF_IN_NAME; 

ifstream fin; 
fin.open(iName); 
if (!fin) die("Could not open " + iName + " for input\n"); 

В этом разделе моего кода я беру строку для имени входного файла, который нужно открыть, и если ничего не введено, я установил его в DEF_IN_NAME (который "input.txt"). Я попытался ввести «i.txt», а также ничего не вводить (по умолчанию «input.txt»), и в обоих случаях моя программа вызывает функцию die (просто выводит сообщение об ошибке и выходит из программы).Не удается открыть файл для ввода C++

Мои файлы находятся в той же папке, что и мой .exe-файл, поэтому я не уверен, почему это происходит. Что вызывает это и как его исправить?

EDIT: Я должен упомянуть, что второй вызов умереть выполняется, а не первый. То есть, файл не может быть открыт для ввода.

Я бег это на окнах 10 из Visual Studio Express 2013 (отладка)

+1

Вы ничего нам не сообщили о вашей операционной системе (или, возможно, Windows с .exe?), Или о том, как вы запускаете программу. Обычная причина в том, что системы «текущий каталог» - это не тот, который вы ожидаете. –

+0

Я не знаю о C++, но в C вы бы напечатали 'strerror (errno)', чтобы получить причину отказа open. – melpomene

+0

@BoPersson извиняется, добавлено больше информации в исходное сообщение. – MV94

ответ

0

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

+0

Если вы не измените свойства проекта, вкладка «Отладка». –

+0

@JonTrauntvein Я попытался разместить мои файлы как в каталоге проекта, так и в том месте, где исполняемый файл связан, и получить тот же результат в любом случае. – MV94

+0

@ MV94 Запишите файл и посмотрите, где он заканчивается. – user4581301

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