使用 n.back() 和转换的 C++ 中字符串的最后一个字符

last character of a string in c++ using n.back() and casting

我的输入是12,为什么输出是50?

#include <iostream>
#include <string.h>
using namespace std;

int main() {
   string n;
   cin>>n;
   cout << (int)n.back();
}

my input is 12. Why is the output 50?

因为在您的系统上使用的字符编码中编码代码单元“2”的值恰好是 50。


如果你想打印代码单元代表的符号,那么你不能转换为int类型,而是插入一个字符类型:

std::cout << n.back();

如果您希望将表示'0'..'9'的character映射到相应的整数值,您可以使用character - '0'。为什么会这样:无论使用什么值来表示数字“0”,从其本身减去它自己的值将产生值 0,因为 z - z == 0。其他数字之所以有效,是因为所有数字都被表示通过以“0”开头的连续值。因此,'1' 将由 '0' + 1 和 z + 1 - z == 1 表示。