Не могу записать во временную папку в Windows 7, используя ofstream - PullRequest
0 голосов
/ 17 марта 2019

Поскольку я использую Qt, я использую Qt-way для получения папки временных папок Windows.Это работает, но потом кажется, что я не могу написать в эту папку.

Вот код:

   const QStringList defaultFolders = QStandardPaths::standardLocations(QStandardPaths::TempLocation);
   const QString tempFolder = defaultFolders.first();
   const QString fileName = tempFolder + "/testFile.txt";

   ofstream file(fileName.toLocal8Bit(), fstream::out);
   const bool ok = file.is_open();

   const QString msg = ok ? "Success" : "Failure";
   QMessageBox::warning(this, fileName, msg);

Что я пробовал до сих пор

  • Использование жестко заданного пути с "\\" вместо "/"
  • Использование .toStdString (). C_str () вместо ".toLocal8bit ()

Примечания

  • В пути есть выделенный символ.
  • Пользователь Windows является администратором
  • Я могу создать вручную /Удалите файлы в папке temp, но скомпилированное приложение не может.
  • Я запускаю Windows 7 на виртуальной машине
  • Работает нормально, если я использую старые функции C (fopen / fwrite/ fclose)

Кто-то имеет представление о том, что происходит не так?

1 Ответ

0 голосов
/ 19 марта 2019

Возможно, использование toStdWString() вместо toLocal8Bit() будет работать лучше?

std::filesystem::path filePath(fileName.toStdWString());
std::ofstream file(filePath);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...