【发布时间】:2016-03-10 08:27:39
【问题描述】:
学习了一些基本的 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)。
【问题讨论】:
-
不确定是否与段错误错误有关,但是(1)参数
input是传值,会被复制,与变量userinput中的变量无关main()。 (2) 你应该在inputUnsolved()中返回。 -
它无法正常编译,因为您在
inputUnsolved中没有返回语句 - 这是一个编译错误。所以肯定有更多的代码让它崩溃。
标签: c++ string function segmentation-fault