c++ - 在终端 C++ 中从字符串中打印出 unicode 字符

标签 c++ string unicode

将包含 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/

相关文章:

c++ - 在删除另一类中一个类的对象时,析构函数如何工作

c++ - 在按下按钮时使用 QTimer 在 Qt 中暂停功能

c++ - 清除 gtest 中的 HasFailure 标志

javascript - 用 pako(javascript 中的 zlib)压缩,用 zlib(python)解压不起作用

database - 在 MariaDB 服务器中设置 UTF-8 会忽略 character_set_system

c++ - friend 声明的放置

php - 无法将 'binary' 字符串转换为 'regular' 字符串

string - R:分割数字字符串

windows - 创建一个带有英文标题栏的 Win32 Window 应用程序,但标题栏突然变成了中文。怎么来的?

javascript - 在 JavaScript 中对 utf-8 字符串使用 encodeURI() 与 escape()