string str = "abcdefg";
cout << str.back() + str.front();
C ++控制台: 200
答案 0 :(得分:0)
#include <iostream>
int main() {
std::string str = "abcdefg";
for(int v : str) {
std::cout << v << " " << static_cast<char>(v) << "\n";
}
}
可能的输出:
97 a // front()
98 b
99 c
100 d
101 e
102 f
103 g // back()
97 + 103 = 200
答案 1 :(得分:0)
当我运行以下代码并添加str.front()+ str.back时,它给了我200,但为什么呢?
字符被编码为整数。 char
是整数类型。当算术运算(例如加法)的操作数是小于int
的整数类型时,这些操作数将提升为int
,这也是表达式的结果类型。这就是为什么输出不是编码字符,而是整数的十进制表示的原因。
为什么值200恰好发生在系统的字符编码中,所以将'a'
表示的值和'g'
表示的值加在一起就等于200。
答案 2 :(得分:0)
您要添加两个char
,这将导致一个整数。
如果要将两个字符组合成一个字符串,则必须至少给它们一个字符串类型,例如:
cout << str.back() + string{str.front()};
或
cout << str.back() + str.substr(0, 1);
但是,如果您只想输出两个字符-您可以一次只输出一个字符:
cout << str.back() << str.front();