c++ - C++ 中字符的标准字符串行为

标签 c++ string std

我有一个我不明白的问题。我将字符添加到标准字符串中。当我取出它们时,打印的值不是我预期的。

int main (int argc, char *argv[])
{
    string x;
    unsigned char y = 0x89, z = 0x76;
    x += y;
    x += z;
    cout << hex << (int) x[0] << " " <<(int) x[1]<< endl;
}

输出: ffffff89 76

我的预期: 89 76

关于这里发生的事情有什么想法吗? 我该如何解决?

最佳答案

字符串运算符 [] 产生一个 char,即一个带符号的值。当您将其转换为 int 以进行输出时,它也将是一个带符号的值。

转换为 char 的输入值是负数,因此 int 也是。因此,您会看到您描述的输出。

关于c++ - C++ 中字符的标准字符串行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7525026/

相关文章:

java - 停止随机化在 Java 中两次选择数组中的相同字符串

python - 在Python中替换一行多行字符串?

c++ - 如何用链表替换 std::vector?

c++ - 使用虚拟继承时初始化基类

c++ - 何时提供默认参数作为模板参数

MySql 字符串操作,从文本中选择项目

C++ UTF-8 实际字符串长度

c++ - 如何使用模板类型专门化模板函数

c++ - 使用共享指针将调用链接在一起

c++ - 如何在调用函数后将右值插入映射