C++ 将char数组中的数字存储到VC++;。

C++ 将char数组中的数字存储到VC++;。,c++,c,visual-c++,char,C++,C,Visual C++,Char,我的场景如下:(C++) 在字符a[10]中,数组a[]包含诸如“1”、“2”、“3”等元素(数字) 说一个[0]=“1” a[1]=“2” a[2]=“3” 现在[]正在存储3个字符“1”、“2”和“3”我想将其存储为整数123(整数123)。 如何在C++中实现这一点?p> 取决于[2]后面的值是多少 int total = 0; for ( int i = 0; i < a[i]; i++ ) { total *= 10; total += a[i] - '0';

我的场景如下:(C++)

在字符a[10]中,数组a[]包含诸如“1”、“2”、“3”等元素(数字)

说一个[0]=“1”
a[1]=“2”
a[2]=“3”

现在[]正在存储3个字符“1”、“2”和“3”我想将其存储为整数123(整数123)。


如何在C++中实现这一点?p> 取决于[2]后面的值是多少

int total = 0;

for ( int i = 0; i < a[i]; i++ ) {
    total *= 10;
    total += a[i] - '0';
}
int-total=0;
for(int i=0;i
a[3]=0
是必须的。如果字符串不是以null结尾的,大多数方法将无法工作

之后,它是一个简单的
number=atoi(a)

\include
int array2int(字符a[]{
int i=0;
int值=0;
while(a[i]){
数值*=10;
值+=a[i]-“0”;
i++;
}
返回值;
};
内部主(空){
字符a[10]=“123”;
整数值=array2int(a);
std::cout
#包括
int ca2int(字符*数组,大小\u t len){
int v=0;
而(len--)
v=10*v+*数组++-'0';
返回v;
}
int main(){
chara[10];
a[0]=“1”;
a[1]=“2”;
a[2]=“3”;

std::难道在SO和互联网上都有大量关于字符串到int的转换的内容。那么,这是否意味着如果我做[3]='\0';那么,我可以显式地分配“int number=atoi(a);?确切地说.atoi()转换到第一个nul。atoi()转换到第一个非数字(不包括前面的任何空格和+/-)这就是为什么我说,‘取决于[2]后面的值是什么’是的,但是
I
看起来确实非常奇怪(这对于以0结尾的数组来说是正确的,但是,最初没有注意到这一点)。
#include <iostream>

int array2int(char a[]) {
  int i = 0;
  int value = 0;
  while (a[i]) {
    value *= 10; 
    value += a[i] - '0';
    i++;
  }
  return value;
};

int main(void) {
  char a[10] = "123";
  int value = array2int(a);
  std::cout << value << std::endl;
};
#include <iostream>
int ca2int(char *array, size_t len){
    int v = 0;
    while(len--)
        v = 10*v + *array++ - '0';
    return v;
}

int main(){
    char a[10];
    a[0] = '1';
    a[1] = '2';
    a[2] = '3';

    std::cout << ca2int(a, 3);
}