我有一个字符串039,我有以下代码
cout<<str2[1]+str2[0]+str2[2]<<endl;
Run Code Online (Sandbox Code Playgroud)
我希望这能给我309,但它给了我156.如何分别考虑他们给我的一切 3 0 9?
这是因为您将字符/它们的基本积分值相加在一起.如果要输出字符本身使用<<运算符,而不是+.字符及其基础值是(假设ASCII):
'3' 51
'0' 48
'9' 57
Run Code Online (Sandbox Code Playgroud)
表达:
str2[1] + str2[0] + str2[2]
Run Code Online (Sandbox Code Playgroud)
将字符加在一起,它不会逐个将它们发送到标准输出,因此表达式变为:
51 + 48 + 57
Run Code Online (Sandbox Code Playgroud)
导致156.使用运算符<<代替:
#include <iostream>
#include <string>
int main() {
std::string str2 = "039";
std::cout << str2[1] << str2[0] << str2[2] << '\n';
}
Run Code Online (Sandbox Code Playgroud)
正如在评论中指出,字符类型都是整数类型和您的char类型可能涵盖的范围-127来127.这也假设您使用ASCII编码将字符映射到上面给出的值.
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |