【发布时间】:2013-02-26 07:33:49
【问题描述】:
我正在寻找一些关于将 std::wstring 转换为 std::string 的最佳方法的建议 - 但这是一种快速而肮脏的转换,可用作 std::map<std::string, int> 对象中的键。
地图很大,已经很好集成到项目中了,只有少数几个key需要这个转换,所以我觉得把地图改成这样会很浪费一个接受std::wstring 作为键的。
转换的输出并不重要,但它必须保持一致,以便每次都能可靠地从映射中提取正确的值。
该应用程序是一个仅限 Windows 的应用程序。
是否有任何已知的过程可以为此目的可靠地进行粗略转换?或者最好的方法是通过通常的、适当的转换过程(如本 SO 问题/答案中所述:How to convert wstring into string?)?
编辑:请记住 - 只要事情是一致的,丢失信息是可以的。即,如果我输入一些日文字符,并且它们始终转换为相同的(可能是垃圾)std::string,那很好。这永远不会用于显示,仅用作从地图中提取值的键。
谢谢!
【问题讨论】:
-
一个adapter?
-
也许您应该将
std::wstring转换为UTF-8,并将std::string设置为该值。这样可以避免虚假的 '\0' 字节。 -
你为什么要使用
std::wstring? Use UTF8 everywhere. -
@Arne Mertz:感谢您提供该文章的链接。有趣的阅读。但是要回答您的问题:在这种情况下别无选择:P