[英]Save file in %temp% folder?
我想將文件保存在臨時文件夾中,通過放置“%temp%”在運行時鍵入時可以輕松找到該文件夾,但不知道如何從 C++導航到它們。
我嘗試使用諸如“GetTempPathA”或“GetTempFileNameA()”之類的函數,但它們不返回字符值。 出於我的目的,我使用“TResourceStream”中的“SaveToFile”方法並需要 UnicodeString,如何找到這些信息?
不, GetTempPath
和GetTempFileName
都不返回 char值。 通常,C函數永遠不會返回字符串。 而是傳遞一個字符串緩沖區和該字符串緩沖區的長度,然后該函數用請求的字符串填充字符串緩沖區。
例如,要調用GetTempPath
,您將編寫以下代碼:
TCHAR szTempPathBuffer[MAX_PATH];
GetTempPath(MAX_PATH, // length of the buffer
szTempPathBuffer); // the buffer to fill
szTempPathBuffer
將包含臨時目錄的路徑。
請注意,您可能不應該顯式調用ANSI函數(帶有A
后綴的函數)。 Windows已經完全采用Unicode已有十多年了。 使用Windows標頭定義的宏,這些標頭會根據是否定義_UNICODE
來自動解析為函數的正確版本,或者顯式調用Unicode版本(后綴為W
版本)。
由於您正在調用ANSI版本,因此您將獲得一個ANSI字符串(由char
值組成),而不是一個Unicode字符串(由wchar_t
值組成),這大概是您嘗試調用的SaveToFile
方法所期望的。
也可以使用 getenv(),但它已被棄用並被視為“非安全”:
#pragma warning(disable:4996) //disable getenv warning
char* p = getenv("TEMP");
std::string path(p);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.