std :: string中的0xc2字符

时间:2018-06-14 12:33:16

标签: c++ char stdstring

以下字符串的大小为4而不是我预期的那样。

$Arraytest = $Arraytest2.Clone()

当循环遍历字符串字符时,将其转换为十六进制,我得到

  • 0x0D(回车的十六进制代码)
  • 0x0A(换行的十六进制代码)
  • 0xc2(十六进制代码,但这是什么?)
  • 0xbd(½字符的十六进制代码)

0xc2来自哪里? 它是某种编码信息吗?我虽然std :: string在字符串中每个可见字符都有一个字符。有人确认0xc2是“字符集修饰符”吗?

1 个答案:

答案 0 :(得分:10)

“½”在unicode中具有代码点U+00BD,并由UTF-8由两个字节序列0xc2bd表示。这意味着,您的字符串只包含三个字符,但长度为四个字节。

请参阅https://www.fileformat.info/info/unicode/char/00bd/index.htm

关于SO的补充阅读:std::wstring VS std::string