尝试用C++打印时,Unicode范围超出
Unicode range exceeds when try to print in C++
我正在尝试用C++打印Unicode字符。我的Unicode字符是古突厥语,我有字体。当我使用一封信的代码时,它会给我另一个字符。例如:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "u10C00" // My character's unicode code.
cout << str << endl;
return 0;
}
这个snipped给出了另一个字母的输出,在它的末尾后面有一个0
。例如,它给了我这个(假设我想打印"Ö"字母):A0
但当我从ubuntu中的字符映射应用程序将我的实际信件复制并粘贴到我的源代码片段时,它给了我想要的东西。这里有什么问题?我的意思是,我想使用字符代码方式"u10C00"
,但它不能正常工作。我觉得这个字符串太长了,所以它使用了前6个字符,并在最后弹出0
。我该怎么解决这个问题?
转义后/u
必须正好是4个十六进制字符。如果您需要更多,您应该使用/U
。第二种变体包含8个字符。
示例:
"u00D6" // 'Ö' letter
"u10C00" // incorrect escape code!
"U00010C00" // your character
std::string
并不真正支持unicode,请改用std::wstring
。但即使是CCD_ 9也可能存在问题,因为它不支持所有大小。
如果在Qt的情况下使用gtkmm或QString
,则可以使用一些外部字符串类,如Glib::ustring
。
几乎每个GUI工具包和其他库都提供自己的字符串类来处理unicode。
相关文章:
- 为什么在全局范围内使用"extern int a"似乎不行?
- 尝试通过多个向量访问变量时,向量下标超出范围
- 错误:未在此范围内声明'reverse'
- 正在将指针转换为范围
- 使用std::transform将一个范围的元素添加到另一个范围中
- 在基于范围的for循环中使用结构化绑定声明
- C++ - Unicode Newline
- 如何计算数据类型的范围,例如int
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 在C++中查找范围的长度
- 如何设置一个范围来提取我想要获得的信息
- 如何将unicode字符串从C++传递到delphi
- 并行用于C++17中数组索引范围内的循环
- 为左值和右值的包装器实现C++范围
- 求出有多少个数字是完美平方,而sqrt()是L,R范围内的素数
- 关于:C++中异常对象的范围:为什么我没有得到副本?
- 超出范围时使用对象
- 如何在 PEGTL 的 c++ 中通过属性/标识符定义 unicode 范围
- 尝试用C++打印时,Unicode范围超出
- 如何在c++中检查字符的unicode值的范围