如果我在字符数组中输入 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 的答案似乎更符合您目前的需求。
#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 的答案似乎更符合您目前的需求。