我希望使用windows C API生成一个以扩展名.ico
结尾的临时文件名。
我尝试过使用GetTempFileName但是我无法控制扩展名。
答案 0 :(得分:2)
您想要使用GetTempFileName的唯一原因是,因为它可以保证生成唯一的文件名。附加任意扩展会破坏该不变量,因此这不是解决方案。
因此,您需要一个能够生成唯一文件名的解决方案。使用GUID的字符串表示是获得它的常用方法:
std::wstring GetUniqueFileName( const std::wstring& extension = std::wstring() ) {
GUID guid{ 0 };
_com_util::CheckError( ::CoCreateGuid( &guid ) );
wchar_t buffer[39];
if ( !::StringFromGUID2( guid, buffer, sizeof( buffer ) / sizeof( *buffer ) ) ) {
throw std::runtime_error( "StringFromGUID2() failed." );
}
std::wstring retVal{ buffer };
retVal += extension;
return retVal;
}