【发布时间】:2016-01-14 14:13:15
【问题描述】:
我有一个使用GetTempFileName 的MFC 程序。在 Windows 7 上它可以正常工作,但是当我将相同的代码带到 Windows 10 时,它会产生垃圾。
TCHAR temp_dir[1024];
GetTempPath(1024,temp_dir);
TCHAR temp_file[1024];
GetTempFileName("C:\\","udb",0,temp_file);
std::cout << "Temp DB Path: " << temp_file << std::endl;
在 Windows7 上:
Temp DB Path: C:\udb2145.tmp
在 Windows10 上:
Temp DB Path: o▒
我的代码做错了吗?还是我应该使用其他功能?
【问题讨论】:
-
我怀疑在您的 Windows 10 机器上您正在执行 Unicode 构建。所有这些 TCHAR 数组都变成了
wchar_t,std::cout无法处理。请改用std::wcout。 -
GetTempFileName接受三个基于TCHAR的字符串,但您只给它一个。另外两个,您只是假设它需要基于char的字符串。 -
你忽略了错误检查并收获了你刚刚的甜点
标签: c++ winapi windows-7 windows-10