К сожалению, C++ не указывает способ получения более подробной ошибки. См. Get std::fstream failure error messages and/or exceptions.
Но платформенный интерфейс должен работать. После каждой операции проверьте, outFile.bad()
, и если это правда, проверьте GetLastError()
. Интерпретировать согласно соответствующей таблице в документации или использовать FormatMessage
.
Я подозреваю, что проблема - это разрешения. Windows Vista представила этот «пользовательский контроль доступа», который должен появляться в диалоговом окне всякий раз, когда программа хочет сделать что-то, что требует прав администратора, даже если у текущего пользователя есть их. Проблема заключается в том, что диалог появляется только при определенных условиях. Примечательно, что не всплывает для консольных приложений, и приложение сразу же лишает права доступа. Такое приложение должно быть явно выполнено «как администратор». Разумеется, не забывайте, что возможность писать конкретный файл там не означает, что вы можете создать новый.
Вы проверили is_open? –
Имеются ли C: \ Program Files \ data? –
@NeilKirk Nope, как я могу это сделать? –