我正在尝试编写一个读取输入然后反转字符串的程序。 所以我可能会进入"赛车"它应该反转为" sracecar"。我不知道为什么我会遇到分段错误。我的调试器也不清楚我的段错误在哪里。我在vim中使用gdb调试器。
如何在周转功能中使我的程序反向输入。
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
string turnaround(string &input);
int main(){
cout << "enter some string to reverso" << endl;
string input;
getline(cin,input);
turnaround(input);
//cout << "your input is " << input << endl;
return 0;
}
string turnaround (string & input){
input = string(input.rbegin(), input.rend());
}
答案 0 :(得分:1)
一旦您离开转弯范围,您在转向环绕中创建的新反转字符串将不再可用。所以你已经输入了不再存在的对象,这就是segfault的原因。
尝试以下方式:
string turnaround(const string& input)
{
return string(input.rbegin(),input.rend());
}