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 (отладка)
Вы ничего нам не сообщили о вашей операционной системе (или, возможно, Windows с .exe?), Или о том, как вы запускаете программу. Обычная причина в том, что системы «текущий каталог» - это не тот, который вы ожидаете. –
Я не знаю о C++, но в C вы бы напечатали 'strerror (errno)', чтобы получить причину отказа open. – melpomene
@BoPersson извиняется, добавлено больше информации в исходное сообщение. – MV94