-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. 如何在另一臺機器上生成臨時文件名?
- 2. 擴展生成文件生成一個庫和文檔與doxygen
- 3. 防止CompileAssemblyFromSource生成重複文件名的臨時文件
- 4. Windows - 文件擴展名操作
- 5. Windows 7的文件擴展名關聯
- 6. 如何在typo3中生成擴展名?
- 7. 在Symfony3上驗證文件擴展名
- 8. 如何在gedit上添加文件擴展名(windows版本)
- 9. 流程圖生成器軟件文件擴展名
- 10. 文件擴展名
- 11. 文件擴展名[]
- 12. 文件擴展名
- 13. 文件擴展名
- 14. 文件擴展名
- 15. 文件擴展名
- 16. 文件名擴展在bash
- 17. 如何在Windows上將點與文件擴展名結合使用?
- 18. 當在tomcat上運行時,Axis2會在臨時文件夾中生成文件
- 19. 如何在生成gulp-sitemap站點地圖時省略文件擴展名?
- 20. 將文件擴展名與具有可變擴展名的文件相關聯
- 21. Windows批處理文件:輸出文件名無擴展名
- 22. 在Windows上編譯Python擴展與Cygwin
- 23. 保存生成的xls文件臨時
- 24. PHP生成大量臨時文件
- 25. Python Wand生成大量臨時文件
- 26. 它允許生成臨時文件嗎?
- 27. 剛生成的臨時文件
- 28. Rails 3:Fileupload不生成臨時文件
- 29. 在Windows 7文件擴展名中搜索包含'#'的文件
- 30. SQL Server的臨時擴展
爲什麼不使用'GetTempFileName'然後連接''.ico''到它? – DyZ
@DYZ:因爲這打破了爲什麼你會首先使用'GetTempFileName'(即返回的文件名不再保證是唯一的)。 – IInspectable
我稍後將文件傳遞給LoadImage,它似乎使用擴展名來決定文件的格式。這就是爲什麼我需要將擴展名設置爲「.ico」。 –