将包含 unicode 字符的字符串打印到终端时,unicode 字符会正确显示。但是当我尝试将 unicode 字符隔离为字符串并将其打印出来时,它打印为“?”。如何从字符串中提取 unicode 字符并将其放入新字符串中而不丢失其 unicode 内存?
文本是全局 std::string
这就是我提取 unicode 字符的方法:
stringstream ss;
string ret = "";
ss << text[index];
ss >> ret;
此外,我无法使用 wchar、wstring 或任何与 unicode 相关的 std 库。
最佳答案
ss << text[index];
我的猜测是,text
是一个 C 字符串或其他实际上使用字节(在 C 和 C++ 中又名char
)作为存储的东西。因此,您的 []
索引操作不会为您提供整个 unicode 代码点,而只提供其中的一个字节。
编辑您添加的内容
"I cannot use … any std library having to do with unicode"
这根本就是个狗屁要求。这意味着您必须重新实现 unicode 功能,这是 a) 巨大的事情 b) 会带来错误。因此,对于所有正确的事情:您使用的是 std::stringstream ,您也可以使用宽字符等。
关于c++ - 在终端 C++ 中从字符串中打印出 unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43056770/