簡體   English   中英

將文件保存在 %temp% 文件夾中?

[英]Save file in %temp% folder?

我想將文件保存在臨時文件夾中,通過放置“%temp%”在運行時鍵入時可以輕松找到該文件夾​​,但不知道如何從 C++導航到它們

我嘗試使用諸如“GetTempPathA”或“GetTempFileNameA()”之類的函數,但它們不返回字符值。 出於我的目的,我使用“TResourceStream”中的“SaveToFile”方法並需要 UnicodeString,如何找到這些信息?

不, GetTempPathGetTempFileName都不返回 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM