在不使用反向的情况下在C++中反转字符串

dar*_*ous 1 c++ string

我编写了以下代码来反转字符串而不使用<algorithm> reverse.我写:

#include <string.h>
#include <iostream>
using namespace std;


void reverse(char *str){
    int sizeStr=strlen(str);
    int firstChar,lastChar,temp;
    for(lastChar = (sizeStr - 1),firstChar = 0 ; lastChar>firstChar ; lastChar--, firstChar++){
        temp = str[firstChar];
        str[firstChar]=str[lastChar];
        str[lastChar] = temp;
    }
}
int main() {
    char *str;
    str = "myname";
    reverse(str);
    cout << str << endl; 
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我得到了段错误str[firstChar]=str[lastChar];.请帮我弄清楚我的错误.

注意:我声明char str[] = "myname"并完美地工作.但是根据你的所有解释,我们必须学会*strstr[].非常感谢.在帮助新程序员方面走了很长的路.

sam*_*ris 5

您无法修改常量字符串文字.

对于C++

使用std::string(感谢@chris).使用std::swap用于交换的字符.(参见C++字符串交换字符位置)

对于C.

malloc缓冲区(具有字符串的长度)和strcpy字符串,然后reverse为新分配的缓冲区执行.

  • 由于标签改为C++,我不得不在`malloc`上建议`std :: string`. (2认同)