-1
A
回答
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;
}
+0
对C问题的C++答案?嗯...... – alk
+0
@alk:我很确定这个问题在我开始回答问题之间发生了变化,并发布了答案。如果您确实需要C解决方案,那么您知道使用哪些API调用。 – IInspectable
相关问题
- 1. Windows上有“sh”扩展名的文件
- 2. 使用.pdf扩展名创建一个临时文件php tempnam
- 3. Windows 7的文件扩展名关联
- 4. 在Symfony3上验证文件扩展名
- 5. 如何在gedit上添加文件扩展名(windows版本)
- 6. 文件扩展名
- 7. 文件扩展名
- 8. 如何在Windows上将点与文件扩展名结合使用?
- 9. 文件名扩展在bash
- 10. 在Windows上编译Python扩展与Cygwin
- 11. 在Windows 7文件扩展名中搜索包含'#'的文件
- 12. 它允许生成临时文件吗?
- 13. Rails 3:Fileupload不生成临时文件
- 14. 使用Powershell删除随机生成的文件扩展名
- 15. SQLite:.db文件扩展名.sqlite文件扩展名为
- 16. 上传文件时添加文件扩展名php
- 17. 如何在C#Windows中获取文件大小,文件名,文件扩展名?
- 18. 如何在bash中创建具有特定扩展名的临时文件?
- 19. 不带扩展名随机文件{1,2 ...}与扩展
- 20. 上传有效文件时重新命名文件扩展名在fileupload
- 21. 如何在linux上运行windows扩展名为.exe的windows可执行文件
- 22. 文本文件扩展名
- 23. C#上传文件没有扩展名
- 24. 验证上传的文件扩展名
- 25. JFileChooser上不显示扩展名文件
- 26. Mac上的文件扩展名图标
- 27. 如何在上传时检查.xlsx文件扩展名
- 28. lein-ritz在Windows上出现错误= 206,文件名或扩展名太长
- 29. Imacros ..文件默认附加扩展名,即使在提及扩展名时
- 30. 在struts 2中上传文件会产生扩展名为.tmp的文件
为什么不使用'GetTempFileName'然后连接''.ico''到它? – DyZ
@DYZ:因为这打破了为什么你会首先使用'GetTempFileName'(即返回的文件名不再保证是唯一的)。 – IInspectable
我稍后将文件传递给LoadImage,它似乎使用扩展名来决定文件的格式。这就是为什么我需要将扩展名设置为“.ico”。 –