我想将文件保存在临时文件夹中,在运行时输入“%temp%”时可以轻松找到该文件夹,但不知道如何从 c++ 导航到它们。
我尝试使用“GetTempPathA”或“GetTempFileNameA()”之类的函数,但它们不返回 char 值。出于我的目的,我使用“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);