我想将文件保存在临时文件夹中,在运行时通过输入“%temp%”可以轻松找到该文件夹,但不知道如何从 C++ 导航到它们。
我尝试使用像“GetTempPathA”或“GetTempFileNameA()”这样的函数,但它们不返回字符值。出于我的目的,我使用“TResourceStream”中的“SaveToFile”方法并需要 UnicodeString,如何找到这些信息?
最佳答案
不,都不是GetTempPath
也不GetTempFileName
返回一个字符值。通常,C 函数永远不会返回字符串。相反,您传入一个字符串缓冲区和该字符串缓冲区的长度,函数用请求的字符串填充该字符串缓冲区。
例如,调用GetTempPath
,您将编写以下代码:
TCHAR szTempPathBuffer[MAX_PATH];
GetTempPath(MAX_PATH, // length of the buffer
szTempPathBuffer); // the buffer to fill
szTempPathBuffer
将包含临时目录的路径。
请注意,您可能不应该显式调用 ANSI 函数(那些带有 A
后缀的函数)。十多年来,Windows 一直完全采用 Unicode。要么使用由 Windows header 定义的宏,它会根据 _UNICODE
是否自动解析为函数的正确版本。已定义,或显式调用 Unicode 版本(带有 W
后缀的版本)。
由于您调用的是 ANSI 版本,因此您得到的是 ANSI 字符串(由 char
值组成),而不是 Unicode 字符串(由 wchar_t
值组成),这大概就是 SaveToFile
的内容您尝试调用的方法需要。
关于c++ - 将文件保存在 %temp% 文件夹中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8979793/