我需要得到的是5作为字符串“510”的整数,但是无论我尝试过什么,我都得到53?关于我应该做什么的任何想法?
代码:
string x = "510";
cout<<x ;//output == 510
int number = x[0];
cout<<number //output == 53 i have also tried stoi() same thing happened
答案 0 :(得分:2)
我不是C ++专家,但是:
cout<<x; //output the string x
cout<<x[0]; // output the first char of the string
和
int number= x[0]-'0'; // convert the first char to a number
cout << number; // print the number
x[0]-'0'
将ASCII字符'5'
(ASCII码53)转换为int,因为'0'
的ASCII码为48,而53 - 48 = 5。
这是ASCII编码的常态。数字0123456789在编码中是连续的,它们的代码是48,49,... 57,因此对于任何数字字符c
,c-'0'
都会产生数字的整数值。