jus*_*der 6 c++ unicode ubuntu g++ clang
我有以下代码:
#include <iostream>
std::string eps("?");
int main()
{
std::cout << eps << '\n';
return 0;
}
Run Code Online (Sandbox Code Playgroud)
不知何故,它在Ubuntu上用g ++和clang编译,甚至打印出正确的字符?.我也有几乎同样的一段代码,它高兴地读取?与cin进std::string.顺便说一下,eps.size()是2.
我的问题是 - 它是如何工作的?我们如何将unicode字符插入std::string?我的猜测是操作系统使用unicode处理所有这些工作,但我不确定.
编辑
和输出一样,我知道终端负责向我展示正确的角色(在这种情况下为ε).
但是输入:cin读取符号' '或任何其他空格字符(并且我逐字节理解).所以,如果我采取?,哪个第二个字节是32 ' ',它将只读取第一个字节,然后停止.但它读到了?.怎么样?
最可能的原因是所有内容都以UTF-8编码,就像在我的系统上一样:
$ xxd test.cpp
...
0000020: 2065 7073 2822 ceb5 2229 3b0a 0a69 6e74 eps("..");..int
^^^^ ? in UTF-8 ^^ TWO bytes!
...
$ g++ -o test.out test.cpp
$ ./test.out
?
$ ./test.out | xxd
0000000: ceb5 0a
^^^^
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
152 次 |
| 最近记录: |