使用 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 表示。
我的输入是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 表示。