复制字符串,c ++

时间:2015-04-03 22:44:36

标签: c++ string

我试图执行一个从中间正确打印字符串的程序 对我来说问题是我的奇怪行为,在某一行,它同意只通过char打印字符串char并拒绝将其返回以在主函数中打印

这是我的代码:

string unscramble(string line)
{
    string temp;
    int i,j;
    int len=line.size();
    i=len/2-1;
    j=0;
    do{
        if(i<0)
        i=len-1;

        temp[j]=line[i];
        cout << temp[j];

        j++;
        i--;
    }while(i!=(len/2)-1);

    return temp;
}

1 个答案:

答案 0 :(得分:1)

您的问题在于对temp的分配。如果字符串长度是偶数,您也会遇到问题。这样做是这样的:

string unscramble(string line)
{
    string temp;
    int i, j;
    int len = line.size();
    int factor = len / 2 - 1;
    if(len % 2 == 1)
        factor = len / 2;
    i = factor;
    j = 0;
    do
    {
        if(i < 0)
            i = len - 1;
        temp += line[i];
        j++;
        i--;
    }
    while(i != factor);
    return temp;
}

示例输入:RUT OWT SNEH HCNERF EERHTEGDIRTRAP DNA SEVODELT

输出:三位法国人有两个土地和一个小包