如何将字符转换为整数
如何在不使用任何就绪函数(ex atoi();)的情况下将字符数组(字符串)更改为整数,例如: –
char a[5]='4534';
我想要数字4534,我怎么能得到它?
不使用任何现有库,您必须:
- 将字符转换为数字。
- 组合数字以形成数字。
将字符转换为数字:
digit = character - '0';
形成一个数字:
number = 0; Loop: number = number * 10 + digit;
您的函数必须检查’+’和’ – ‘以及其他非数字字符。
首先是这个说法
char a[5]='4534';
不会编译。 我想你的意思是
char a[5]="4534"; ^^ ^^
将此字符串转换为数字就足够简单了。
例如
int number = 0; for ( const char *p = a; *p >= '0' && *p <= '9'; ++p ) { number = 10 * number + *p - '0'; }
或者你可以跳过前导空格。
例如
int number = 0; const char *p = s; while ( std::isspace( ( unsigned char )*p ) ) ++p; for ( ; *p >= '0' && *p <= '9'; ++p ) { number = 10 * number + *p - '0'; }
如果字符串可能包含符号'+'或' - ',那么您可以先检查第一个字符是否为符号。
你可以这样
它的工作原理
#include #include #include int main() { char a[5] = "4534"; int converted = 0; int arraysize = strlen(a); int i = 0; for (i = 0; i < arraysize ; i++) { converted = converted *10 + a[i] - '0'; } printf("converted= %d", converted); return 0; }
我更喜欢使用std::atoi()
函数将字符串转换为数字数据类型。 在您的示例中,您有一个非零终止数组 "\0"
,因此该函数将无法使用此代码。
考虑使用零终止的"strings",
如:
char *a = "4534"; int mynumber = std::atoi( a ); // mynumber = 4534