题目:将一个字符串转换成数字。例如:"123"-->123, "71.02"-->71.02.
方法一,直接调用库函数atoi(const char*) 和atof(const char*)
stoi(string str)
# include <stdio.h>
# include <stdlib.h>
int main ()
{
int num_int;
double num_double;
char str_int[30] = "435"; //将要被转换为整型的字符串
char str_double[30] = "436.55"; //将要被转换为浮点型的字符串
num_int = atoi(str_int); //转换为整型值
num_double = atof(str_double); //转换为浮点型值
printf("num_int: %d\n", num_int);
printf("num_double: %lf\n", num_double);
return 0;
}
输出结果:
num_int: 435
num_double: 436.550000
方法二,自己实现
int str2int(const char *str)
{
int temp = 0;
const char *ptr = str; //ptr保存str字符串开头
if (*str == '-' || *str == '+') //如果第一个字符是正负号,
{ //则移到下一个字符
str++;
}
while(*str != 0)
{
if ((*str < '0') || (*str > '9')) //如果当前字符不是数字
{ //则退出循环
break;
}
temp = temp * 10 + (*str - '0'); //如果当前字符是数字则计算数值
str++; //移到下一个字符
}
if (*ptr == '-') //如果字符串是以“-”开头,则转换成其相反数
{
temp = -temp;
}
return temp;
}