基本理念:
数字字符减去所对应的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; }
运行结果截图: