如何将字符转换为整数

如何在不使用任何就绪函数(ex atoi();)的情况下将字符数组(字符串)更改为整数,例如: –

char a[5]='4534'; 

我想要数字4534,我怎么能得到它?

不使用任何现有库,您必须:

  1. 将字符转换为数字。
  2. 组合数字以形成数字。

将字符转换为数字:

 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