我有一個與ofstream的問題,它不會打開我的文件寫入無論我做什麼。我有一種感覺,那是因爲我正在使用DirectXApp或Windows許可,但當打開文件時ifstream工作得很好。Ofstream無法打開或創建文件
基本上我爲一個項目製作了一個Breakout的簡單克隆,我想將高分保存到一個.txt文件中,以便在下次播放時再次加載它,並且如果分數較高而不是最初的高分,而是將其寫入文件以取代最初的高分。
// included files
#include "pch.h"
#include "GameManager.h"
#include <iostream>
#include <sstream>
void GameManager::saveHighScore(int newHighScore) // File saving not working!!!
{
std::string FilePath = "Assets/HighScore.txt";
std::ofstream File(FilePath.c_str(), std::ios::out | std::ios::trunc);
if (File.is_open()) { // File is never opened
File << newHighScore;
File.flush();
File.close();
}
}
我試過下面的東西,至今沒有奏效:
保證了文件路徑存在(這是一樣的我ifstream的,其內容是罰款)
已經創建文件,並檢查Visual Studio屬性(內容:是類型:文本)
- 修改所有Windows權限,以確保文件不是隻讀的,我有Full Co對文件的控制權限
- 以管理員模式運行Visual Studio並確保我擁有對Visual Studio的完全控制權限
- 創建了一個控制檯應用程序並在其中進行了測試,並且工作得很好。
我一直在尋找一個小時的解決方案,我不知道它可能是什麼,有什麼建議嗎?
實際上你的距離是否在你的源代碼中?我不認爲它會編譯,如果它是 – dwcanillas
我的猜測是,您的應用程序的工作目錄不是可執行文件的輸出目錄,所以您的相對路徑不正確。您可能想將其更改爲$(OutDir)而不是默認的$(ProjectDir) – Borgleader
您需要檢查相同的應用程序是否未將文件阻塞(例如:您所說的ifstream)。或者推薦工作目錄已被應用程序更改。 – NetVipeC