我试图执行一个从中间正确打印字符串的程序 对我来说问题是我的奇怪行为,在某一行,它同意只通过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;
}
答案 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
输出:三位法国人有两个土地和一个小包