我有一个我不明白的问题。我将字符添加到标准字符串中。当我取出它们时,打印的值不是我预期的。
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/