简单的C ++字符串反转

时间:2014-11-15 23:57:34

标签: c++ string reverse

我试图反转一个字符串,但以下内容不起作用。这是我的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())

我只是想知道为什么我的功能不起作用。我试图在不使用任何其他字符串的情况下反转字符串。

1 个答案:

答案 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--;
}