C++ 复制字符串,c++;

C++ 复制字符串,c++;,c++,string,C++,String,我正在尝试执行一个程序,从中间正确地打印字符串 我的问题是,在某一行,它同意一个字符一个字符地打印字符串,而拒绝返回到main函数中打印 这是我的密码: 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]=

我正在尝试执行一个程序,从中间正确地打印字符串 我的问题是,在某一行,它同意一个字符一个字符地打印字符串,而拒绝返回到main函数中打印

这是我的密码:

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;
}
字符串解读(字符串行)
{
字符串温度;
int i,j;
int len=line.size();
i=len/2-1;
j=0;
做{

如果(i您的问题在临时任务中。如果字符串长度为偶数,您也会遇到问题。请改为这样做:

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;
}
字符串解读(字符串行)
{
字符串温度;
int i,j;
int len=line.size();
整数系数=len/2-1;
如果(长度%2==1)
系数=len/2;
i=系数;
j=0;
做
{
if(i<0)
i=len-1;
温度+=行[i];
j++;
我--;
}
而(i!=系数);
返回温度;
}
示例输入:RUT OWT SNEH HCNERF EERHTEGDIRTRAP A DNA SEVODELT


输出:三只法国母鸡两只斑鸠和一只鹧鸪提供:1)输入2)预期输出3)实际输出提问时请准确。“拒绝退回”确切的意思是什么?你会得到一个错误,字符串是空的还是发生了什么?你是在尝试以相反的顺序打印字符串吗?从中间到开始,从结束到中间?是的,我尝试从中间反向打印,字符串返回空的我不是标准库的专家,但我猜是这样的由于temp的长度为0,因此无法进行赋值。如果temp最初不是空的,而是行的大小,那么它可以正常工作。为什么认为逐字符赋值是错误的?它可以正常工作!@nielsen,不是我。可能是编译器相关的。试着在这里输入代码,看看它是否正常工作:因为除非我更改此行编译成功!对编译器的建议:(