我试图反转一个字符串,但以下内容不起作用。这是我的I / O:
Enter text to be reversed:
>> Alex
Reversed, it is: llex
这是我的代码:
string Reversal(string name) {
for(double i = name.length() - 1 ; i >= 0; i--) {
int j = 0;
name[j] = name[i];
j++;
}
return name;
};
int main(int argc, const char * argv[]) {
string name;
cout << "Enter text to be reversed: " << endl;
cin >> name;
cout << "Reversed, it is: " << Reversal(name) << endl;
return 0;
}
注意:当我使用库中内置的反向函数时,它工作正常:
reverse(name.begin(),name.end())
我只是想知道为什么我的功能不起作用。我试图在不使用任何其他字符串的情况下反转字符串。
答案 0 :(得分:1)
你在循环结束时递增j,但是你正在设置它的&#39;无论如何,在开头的值为0,所以你总是只看第一个字符。
您的代码的另一个问题是,从一开始迭代时,您将覆盖数组的另一半。其中一个解决方案是在你走的时候交换字符并在中间结束。
Exapmle:
int j = 0;
int i = name.length() - 1;
while(i > j){
char temp = name[j];
name[j] = name[i];
name[i] = temp;
j++;
i--;
}