4

如何获取临时文件夹并设置临时文件路径?我尝试了下面的代码,但它有错误。非常感谢!

TCHAR temp_folder [255];
GetTempPath(255, temp_folder);

LPSTR temp_file = temp_folder + "temp1.txt";
//Error: IntelliSense: expression must have integral or unscoped enum type
4

2 回答 2

3

这段代码添加了两个指针。

LPSTR temp_file = temp_folder + "temp1.txt";

没有 连接字符串,也没有为您想要的结果字符串创建任何存储。

对于 C 风格的字符串,使用lstrcpylstrcat

TCHAR temp_file[255+9];                 // Storage for the new string
lstrcpy( temp_file, temp_folder );      // Copies temp_folder
lstrcat( temp_file, T("temp1.txt") );   // Concatenates "temp1.txt" to the end

根据的文档GetTempPath255,将代码中所有出现的 替换为 也是明智之举MAX_PATH+1

于 2013-04-24T03:44:18.117 回答
1

您不能将两个字符数组相加并获得有意义的结果。它们是指针,而不是像 std::string 这样提供如此有用操作的类。

创建一个足够大的 TCHAR 数组并使用 GetTempPath,然后使用 strcat 将文件名添加到其中。

TCHAR temp_file [265];
GetTempPath(255, temp_file);
strcat(temp_file, "temp1.txt");

理想情况下,您还应该测试 GetTempPath 的结果是否失败。据我从另一个答案中链接的文档中可以看出,失败的最可能原因是提供的路径变量太小。按照那里的建议使用 MAX_PATH+1+9。

于 2013-04-24T03:49:17.273 回答