在 Windows 中从 DOS 8.3 文件名打开 Unicode 文件名
我可以为 unicode 文件名生成 8.3 文件名并使用该 ASCII 字符字符串在 Windows 中打开 fstream
吗?
我知道 MSVC++ 为 fstream
提供了 wchar_t*
重载,但是 GCC 的 libstdc++ 没有提供这个:(,所以我需要一个替代方案。我不想创建我的自己的streambuf类就是为了这个,因为它看起来有点矫枉过正。
Can I generate a 8.3 filename for a unicode filename and use that ASCII string of char's to open an fstream
in Windows?
I know that MSVC++ provides a wchar_t*
overload for fstream
, but GCC's libstdc++ does not provide this :(, so I need an alternative. I don't want to create my own streambuf class just for this, as it seems overkill.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以利用 Windows API 函数
GetShortPathName
为您提供短名称。您无法通过算法“计算”名称,因为任意长名称和短名称之间不存在一对一的对应关系,并且我认为您无法避免使用 Windows API 进行翻译。You can probably leverage the Windows API function
GetShortPathName
to give you the short name. You cannot "compute" the name algorithmically as there is no one-to-one correspondence between an arbitrary long name and a short name, and I don't think you can avoid using the Windows API for the translation.