Файл не открывается, хотя stat () может его найти

У меня есть документ C ++, в котором мне нужно открыть файл. Я не использую относительный путь для ссылки на мой файл. В настоящее время я использую полный путь к файлу на своем жестком диске, хотя позже я переключусь на использование только текущего каталога. В любом случае, для FACT я знаю, что этот файл ссылается правильно и доступен для открытия, потому что я выполнил stat () для имени файла, и он возвращает всю правильную информацию о файле. Вот основной процесс, который происходит:

string fName = "C:\\Users\\[user]\\Downloads\\file.DAT";
ifstream inFile;
inFile.open(fName);

struct _stat buf;                        // I put these lines here to test that
int result = _stat(fName.c_str(), &buf); // the file is being referred-to right

inFile >> levelnumber;
if(inFile.fail())  // inFile.fail() keeps evaluating to TRUE
ThrowError("Corrupt or inaccesible .DAT file."); // I wrote ThrowError

В любом случае, inFile.fail () продолжает вычислять значение true, хотя файл определенно ссылаются правильно (это то, что проверяет вызов _stat ()).

Что я делаю неправильно? :П

1

Решение

Ваш тест не говорит вам, можно ли открыть файл. Ваш тест говорит вам, что файл не может быть открыт или levelnumber не может быть прочитано Чтобы проверить, был ли ваш файл открыт, вы можете проверить файл сразу после вызова open(), Если файл действительно читаемый, его следует преобразовать в true:

std::ifstream inFile(fName);
if (!inFile) {
std::cerr << "failed to open '" << fName << "' for reading\n";
}
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]