分段错误,不确定orgins

时间:2016-10-01 04:29:53

标签: c++ string function segmentation-fault

我正在尝试编写一个读取输入然后反转字符串的程序。 所以我可能会进入"赛车"它应该反转为" 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());
}

1 个答案:

答案 0 :(得分:1)

一旦您离开转弯范围,您在转向环绕中创建的新反转字符串将不再可用。所以你已经输入了不再存在的对象,这就是segfault的原因。

尝试以下方式:

 string turnaround(const string& input)
 {
    return string(input.rbegin(),input.rend());
 }