0

我想将文件保存在临时文件夹中,在运行时输入“%temp%”时可以轻松找到该文件夹​​,但不知道如何从 c++ 导航到它们。

我尝试使用“GetTempPathA”或“GetTempFileNameA()”之类的函数,但它们不返回 char 值。出于我的目的,我使用“TResourceStream”中的“SaveToFile”方法并且需要 UnicodeString,如何找到这些信息?

4

2 回答 2

6

不,既不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您尝试调用的方法所期望的。

于 2012-01-23T23:00:33.427 回答
0

也可以使用 getenv(),但它已被弃用并被视为“不安全”:

#pragma warning(disable:4996) //disable getenv warning

char* p = getenv("TEMP");
std::string path(p); 
于 2022-01-07T09:25:18.073 回答