c语言编程笔录

首页 >   > 笔记大全

笔记大全

c如何将字符串转数字

更新时间:2023-12-05

段落一:用库函数实现字符串转数字

在C++中可使用库函数atoi、atof、strtod、strtol和strtoll等来实现字符串转数字的操作。其中,atoi函数只能将字符串转换为整型数字,atof函数只能将字符串转换为浮点型数字,而strtol和strtoll可以将字符串转换为长整型数字。下面使用atoi函数为例,展示如何将字符串转数字:

#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
    char str[] = "12345";
    int num = atoi(str);
    cout << "字符串 " << str << " 转换后的数字是 " << num << endl;
    return 0;
}

段落二:用递归实现字符串转数字

递归是另一种实现字符串转数字的方法。它需要对字符串进行循环遍历,从高位到低位递归求得数字。下面使用递归的方式,将字符串转换为整型数字:

#include <iostream>
#include <cstring>

using namespace std;

int strToInt(char *str, int len)
{
    if (len == 1)
        return str[0] - '0';
    int num = strToInt(str, len - 1) * 10 + str[len - 1] - '0';
    return num;
}

int main()
{
    char str[] = "12345";
    int num = strToInt(str, strlen(str));
    cout << "字符串 " << str << " 转换后的数字是 " << num << endl;
    return 0;
}

段落三:用相邻位权值实现字符串转数字

相邻位权值的方法是一种通过相邻位之间的差值来得到数字的方法。具体步骤是先假设最高位的权值为1,然后逐位从左到右计算差值,并加上差值乘以权值。下面使用相邻位权值的方法,将字符串转换为整型数字:

#include <iostream>
#include <cstring>
#include <cmath>

using namespace std;

int strToInt(char *str, int len)
{
    int num = 0, weight = pow(10, len - 1);
    for (int i = 0; i < len; i++)
    {
        num += (str[i] - '0') * weight;
        weight /= 10;
    }
    return num;
}

int main()
{
    char str[] = "12345";
    int num = strToInt(str, strlen(str));
    cout << "字符串 " << str << " 转换后的数字是 " << num << endl;
    return 0;
}

段落四:注意事项

在进行字符串转数字的时候,需要注意以下几点:

  • 字符串中只能包含数字,不能包含其他字符,否则会导致转换失败。
  • 不同的转换方式可能会产生不同的结果,例如对于浮点型数据,在使用库函数atof时,可能会有精度误差的问题。
  • 字符串长度需要考虑,避免数组越界。