基本理念:
数字字符减去所对应的ASCII码值即对应的数值
代码解释很全面,详情请看代码
#include<iostream>
#include<string>
using namespace std;
double swap(char *str) {
double x=0;
int i = 0;
//整数部分的转换
while(str[i]>=48 && str[i]<=57) {
x=x*10+str[i]-48; //字符0对应的ASCII码值为48
i++;
}
//小数部分的转换
if(str[i]=='.') {
i++;
double y=0;
double j=10.0;
while(str[i]>=48 && str[i]<=57) {
y=y+(str[i]-48)/j;
i++;
j*=10;//小数点后面越来越小(逐渐小10倍)
}
x+=y;
}
return x;
}
int main()
{
char str[20];
cin.getline(str,20); //输入字符串
//cin.get(); //吃掉一个回车键
double a = swap(str);
cout<<a<<endl;
//若直接将字符串赋值给整型,则赋的值为ASCII码值
int c = '1' - '1'; //可以进行运算(ASSCII码值的运算
cout<<c<<endl; //输出为0
return 0;
}
运行结果截图: