string myString="";
int c;
int arrayMain1[100]={0}, arrayMain2[100]={0},arrayMain3[100]={0};
cout << "Input Number" << endl;
cin >> myString;
cout << myString[0]<<endl;
if(myString.length()<=100)
{
c=99;
for(int i=myString.length();i>=0;i--)
{
//cout << myString[i];
arrayMain1[c]=myString[i];
c--;
}
for(int j=0;j<=100;j++)
{
cout << arrayMain1[j];
//cout << myString[j];
}
}
这是我的代码,它假设将我输入的字符串复制到数组的末尾。如果我的输入字符串是'1234',则数组看起来是0000 .... 1234。出于某种原因,当我打印数组时,它打印错误的数字。
答案 0 :(得分:1)
一个错误是您应该从myString.length() - 1
for(int i=myString.length() - 1;i>=0;i--)
另一个错误是j循环应该循环到99
for(int j=0;j<=99;j++)
此外,在将char分配给int时,您必须减去ASCII值'0'。
arrayMain1[c]=myString[i] - '0';
答案 1 :(得分:0)
字符串存储为字符数组。您的arrayMainN数组具有int类型的元素。 C ++会通过ASCII表隐式地将字符转换为整数,但不幸的是?它不会将字符'1'映射到int 1,依此类推。
因此,在将字符存储到数组中之前,需要将字符转换为整数。这样做的惯用方法是
int ctoi(char c) {
return c - '0';
}
// example usage
char mychar = '8';
cout << ctoi(mychar); // prints 8
您可以像这样更改代码:
arrayMain1[c]=ctoi(myString[i]);
答案 2 :(得分:0)
有两点需要指出。首先,存在类型不匹配。我已经在C / C ++工作了大约两年。坦率地说,我不确定我是否正确,但我想,你正在将char转换为int。那就是争抢事情。比如说,字符串中有1个。但它作为一个char,当你将它转换为int时,你得到1的ASCII值(据我所知,它应该是48左右)。这就产生了问题。还有一点需要指出(我对这一点非常不确定。)你的反正意见。就像,如果你输入1234,你应该把它当作4321。