如果我在字符数组中输入 3 位字符,'atoi' 函数是 returns 只有 2 位数字

'atoi' function is returns only 2 digit number if I enter a 3 digit character in character array

#include <iostream>
using namespace std;
int main()
{
    char myarray[3] = {'0','1','2'};
    int i = atoi(myarray);
    cout<<i<<endl;
}

这个节目只有 12 但我希望它是 012... 还有其他功能可以做这件事吗?

这有很多问题:

char myarray[3] = {'0','1','2'};

错过了 NULL 终止符(因此无法确定字符串的末尾在哪里)。从字符串初始化的更简单方法是:

char myarray[] = "012";

这将为您排序长度并添加 NULL 终止符。

你没有得到前导零,因为你存储转换结果的类型不知道原始输入数据有多长,或者它有多少个前导零......它实际上只是一个数字。如果还想打印多个前导零,可以使用 iostream.width() 设置最小宽度,并使用 iostream.fill() 设置要使用的字符来填充它,例如

cout.width(3); // At least three chars
cout.fill('0');  // Pad with zeroes
cout << i;

我会质疑为什么你需要能够做到这一点; JuniorCompressor 的答案似乎更符合您目前的需求。