分割故障,不确定原因

Segmentation fault, not sure of orgins

本文关键字:不确定 故障 分割      更新时间:2023-10-16

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

您在周转中创建的新反向字符串一旦离开周转范围就不再可用。因此,您的输入指向不再存在的对象,这就是区段错误的原因。

试试下面的方法:

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