根据this问题std::wstring
的答案可以是u16string
或u32string
。
根据this问题的第一个答案,我们可以简单地转换为u16string
并获得std::wstring
。
我想知道的是:我如何知道我是否有16位或32位表示?如果我想将UTF8转换为std::wstring
,看起来我无法使用所提供的解决方案,因为我不知道运行时间是什么。
那么,现在我该如何正确转换呢?或者这是不相关的,如果我有16位或32位表示而没有丢失任何东西,那么在这种情况下转换将总是独立成功?
有人可以澄清一下吗?
编辑:
所有这一切都来自于我的基于Windows的笔记本电脑(Win8.1)与MSVC 2010,转换字符串" abc" (" abc")失败并带有以下代码:
std::wstring_convert<std::codecvt_utf8<wchar_t> > myconv;
std::wstring table_name = myconv.from_bytes( (const char *) tableName );
我还没有在Linux / Mac上尝试过,但是看到Windows失败告诉我这不是一个好兆头而且我做错了。