函数中的 C++ 段错误

标签 c++ string function segmentation-fault

学习一些基本的 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/

相关文章:

c++ - 在命令行 C++ 上显示进度

c++ - 链接到链接到我已经链接到的库的库

c++ - 如何在程序退出之前强制 boehm gc 全部收集

c++ - 如何在不跳过 eol 的情况下使用 skipper ascii::space?

php - (PHP) 使字符串小写,第一个字母除外

c# - 检查对象是否为空

c++ - 如何在不破坏现有代码的情况下向函数添加输出参数?

python - 如何只获取随机字母而不是符号

PHP - 在变量中查找某些字符串

python - 来自两个以上字符串的最长公共(public)单词序列