我的配置:
- 编译器:gnu gcc 4.8.2
- 我用 C++11 编译
- 平台/操作系统:Linux 64bit Ubuntu 14.04.1 LTS
我有这个方法:
static inline std::u16string StringtoU16(const std::string &str) {
const size_t si = strlen(str.c_str());
char16_t cstr[si+1];
memset(cstr, 0, (si+1)*sizeof(char16_t));
const char* constSTR = str.c_str();
mbstate_t mbs;
memset (&mbs, 0, sizeof (mbs));//set shift state to the initial state
size_t ret = mbrtoc16 (cstr, constSTR, si, &mbs);
std::u16string wstr(cstr);
return wstr;
}
我非常想在 char 到 char16_T 之间进行转换(通过 std::string 和 std::u16string 以方便内存管理),但无论输入变量 str 的大小如何,它都只会返回第一个字符。如果 str="Hello" 它将返回 "H"。我不确定我的方法有什么问题。ret 的值为 1。