Ошибка открытия файла с помощью ifstream в qt
Мой партнер написал кучу кода для одного из моих проектов в текстовом редакторе, когда я запускаю код, он работает отлично..... теперь я скопировал и вставил весь код в Qt Creator, и у меня возникла проблема
stringstream ss;
string line;
ifstream myfile;
myfile.open("Instructors.txt");
if (myfile.is_open()){
while (getline(myfile,line)){
ss << line << ", ";
}
myfile.close();
}
else cout << "bad open" << endl;
Выше приведена часть моего кода, в которой возникла проблема. Я могу заверить вас, что все файлы Instructors.txt действительно находятся в правильном файле, но каждый раз, когда наш код достигает этой точки, вместо открытия файла я получаю сообщение об ошибке "плохо открыт" "с чего бы это?
3 ответа
Трудно сказать, что это может быть без кода ошибки, что вы можете сделать, чтобы улучшить сообщение об ошибке с помощью чего-то более значимого (для вас и ваших клиентов):
else cout << "Error opening file: " << strerror(errno) << endl;
strerror
(см. ссылку) функция возвращает строку для данного кода ошибки, записанного в errno
макро.
В противном случае вы можете сделать это гораздо больше в C++, используя исключения: сначала включите их для вашего потока:
myfile.exceptions(ifstream::failbit | ifstream::badbit);
Тогда лови их, все вместе это:
try
{
ifstream myfile("Instructors.txt");
myfile.exceptions(ifstream::failbit | ifstream::badbit);
while (getline(myfile, line))
{
ss << line << ", ";
}
myfile.close();
}
catch (ifstream::failure e)
{
cout << e.what() << endl;
}
Попробуйте переписать имя файла, возможно, оно содержит символы из разных кодировок.
Дважды проверьте рабочий каталог, скорее всего, он находится в папке сборки (куда сбрасывается исполняемый файл)
в QtCreator вы можете исправить это, зайдя в проекты и выбрав run; там вы сможете установить рабочий каталог