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时,可能会有精度误差的问题。
- 字符串长度需要考虑,避免数组越界。