学习一些基本的 C++,试图理解函数,但在尝试正确编写函数时遇到了麻烦。 这是原始代码(工作正常):
#include <iostream>
#include <string>
//#include "assn.h"
using namespace std;
int main()
{
string userinput;
char ch1 = '-';
cout << "Enter word: ";
getline(cin, userinput);
int i = 0;
for (i; i < userinput.size(); ++i)
{
if (userinput.at(i) >= 'a' && userinput.at(i) <= 'z')
userinput.at(i) = ch1;
}
cout << userinput << endl;
return 0;
}
这是我输入的代码,试图让它成为一个函数:
#include <iostream>
#include <string>
//#include "assn.h"
using namespace std;
string inputUnsolved(string input);
int main()
{
string userinput;
cout << "Enter word: ";
getline(cin, userinput);
inputUnsolved(userinput);
cout << userinput << endl;
return 0;
}
string inputUnsolved(string input)
{
char ch1 = '-';
int i = 0;
for (i; i < input.size(); ++i)
{
if (input.at(i) >= 'a' && input.at(i) <= 'z')
input.at(i) = ch1;
}
}
编译正常,但输入用户输入并尝试执行后,显示“Segmentation fault”
尝试了几次重写,但都没有成功,老实说,我的知识还不够,无法找到修复它的方法。代码基本上读入一个字符串变量并将其显示为一组短划线 (hangman)。
最佳答案
改为通过引用传递
void inputUnsolved(string& input);
关于函数中的 C++ 段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35911156/