我正在尝试编写一个读取输入然后反转字符串的程序。 因此,我可能会输入“racecars”,它应该将其转换为“sracecar”。我不知道为什么我得到分段错误。我的调试器不清楚我的段错误是在哪里。我在vim中使用gdb调试器。分割错误,开头的不确定
如何在turnaround函数中使我的程序反向输入。
#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());
}
你的程序表现出不确定的行为,通过退出非void函数没有遇到一个'return'声明的方式。 –
周转不返回任何东西!你是如何编译你的代码的? – HazemGomaa
由于'turnaround()'正在修改'input',所以要么使其返回'void',要么在末尾添加一个'return input'语句。无论哪种方式,这将避免未定义的行为与功能的“结束”相关联。另外,打开编译器警告 - 大多数编译器,如果配置得当,会警告关于非'空洞'功能的结束。 – Peter