我正在尝试将一个数字(12位数)作为字符串读取,然后将其复制到整数数组中但不能正确。
我的代码在这里:
//header files
#include<iostream>
#include<string>
// namespace
using namespace std ;
int main ()
{
string input ;
do
{
cout << "Make sure the number of digits are exactly 12 : ";
cin >> input ;
} while((input.length()) != 12 );
int code[11] ; // array to store the code
//change string to integer
int intVal = atoi(input.c_str());
//
for (int i = 12; i >= 0 ; i--)
{
code[i] = intVal % 10;
intVal /= 10 ;
cout << code[i] ;
}
cout << endl ;
//now display code
for (int i = 0 ; i < 11 ; i++)
{
cout << code[i];
}
system ("pause") ;
return 0 ;
}
因此,对于123456789101的基本输入,它应该存储在code []数组中。
因此,当我显示代码循环时,我想确保它与123456789101相同。
但它正在实现:
代码期间
for (int i = 0 ; i < 11 ; i++)
{
cout << code[i];
}
它显示00021474836,我想让它向我显示数字!
答案 0 :(得分:3)
要将字符串转换为int数组,请尝试:
std::string input = "123456789101";
int code[12];
for (int i = 0 ; i < 12 ; i++)
{
code[i] = input.at(i) - '0';
}
此外,intvVal还不足以容纳123456789101
答案 1 :(得分:2)
code
的长度为11,但您尝试访问for
循环中的索引12和11,两者都不存在。其次,12位数字不适合常规的32位整数,对于带符号的32位整数,最大值为2147483647。
尝试使用atol
并将值存储在uint64_t
中,并修复数组索引(长度应为12,索引应为0-11)。