当我转换它时,为什么我的字符串会给出这样的输出?

时间:2018-04-26 14:45:45

标签: c++ string

我需要得到的是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

1 个答案:

答案 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,因此对于任何数字字符cc-'0'都会产生数字的整数值。