简单的C++字符串反转
Simple C++ String Reversal
我正在尝试反转字符串,但以下内容不起作用。这是我的 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())
我只想知道为什么我的函数不起作用。我正在尝试在不使用任何其他字符串的情况下反转字符串。
你在循环结束时递增 j,但无论如何你在开始时将其值设置为 0,所以你总是只看第一个字符。
代码的另一个问题是,从头开始迭代时会覆盖数组的另一半。解决方案之一是在前进时交换字符并在中间结束。
示例:
int j = 0;
int i = name.length() - 1;
while(i > j){
char temp = name[j];
name[j] = name[i];
name[i] = temp;
j++;
i--;
}