将字符串添加到数组的末尾?

时间:2014-03-11 05:33:21

标签: c++ arrays string

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。出于某种原因,当我打印数组时,它打印错误的数字。

3 个答案:

答案 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。