我从内存中的结构中获取 16 位,我需要将它们转换为字符串。16 位代表一个 unicode 字符:
typedef struct my_struct {
unsigned unicode : 16;
} my_struct;
我首先将这些位转换为一个无符号字符,它适用于小到足以容纳一个字符的值。但是,对于像“♪”这样的字符,它会错误地截断。这是我到目前为止所拥有的:
char buffer[2] = { 0 };
wchar_t wc[1] = { 0 };
wc[0] = page->text[index].unicode;
std::cout << wc[0] << std::endl; //PRINT LINE 1
int ret = wcstombs(buffer, wc, sizeof(buffer));
if(ret < 0)
printf("SOMETHING WENT WRONG \n");
std::string my_string(buffer);
printf("%s \n", my_string.c_str()); //PRINT LINE 2
打印第 1 行当前打印:“9834”,打印第 2 行打印:“”(空字符串)。我试图让 my_string 包含“♪”。