如何获取临时文件夹并设置临时文件路径?

时间:2013-04-24 03:28:16

标签: c++ path syntax-error temp

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

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

2 个答案:

答案 0 :(得分:3)

此代码添加了两个指针。

LPSTR temp_file = temp_folder + "temp1.txt";

字符串 concatenating并且它没有为您想要的结果字符串创建任何存储空间。

对于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

基于the documentation for GetTempPath,将代码中255的所有出现替换为MAX_PATH+1也是明智的。

答案 1 :(得分:1)

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

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

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

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