简单的C++字符串反转

Simple C++ String Reversal

本文关键字:字符串 C++ 简单      更新时间:2023-10-16

我正在尝试反转字符串,但以下内容不起作用。这是我的 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--;
}