在C ++中将用户输入字符串传递给不同的函数

时间:2016-02-18 07:45:38

标签: c++ function

我是C ++的新手,我很难通过引用/值传递?

我试图将get_sentence函数中的用户输入字符串传递给replace_message函数并用下划线替换字符,但我不会这样做吗?

如果这不够具体,我很抱歉,但我真的可以使用一些帮助。

int main() {
    string hidden, public_string;
    get_sentence();
    replace_message(hidden);
    return 0;
}

string get_sentence() {
    string hidden;
    cout << "Enter a message: ";
    getline (cin, hidden);
    return hidden;
}         

string replace_message(string &hidden) {
    string public_string;
     hidden = public_string;
    for(int i=0; i< public_string.length(); i++) {
      if(public_string[i] != ' ')
         public_string[i] = '_';
    }
    cout << "The message is" << public_string << endl;
    return public_string;
}

3 个答案:

答案 0 :(得分:5)

修改main()方法以使用从get_sentence()函数返回的结果:

int main() {
    string hidden, public_string;

    hidden = get_sentence();      // store user message here
    replace_message(hidden);      // and pass it here

    return 0;
}

您还应该修改replace_message()函数以使用传递给它的输入:

string replace_message(string &hidden) {
    string public_string = hidden;

    for (int i=0; i< public_string.length(); i++)
    {
        if (public_string[i] != ' ')
            public_string[i] = '_';
    }

    cout << "The message is" << public_string << endl;

    return public_string;
}

答案 1 :(得分:4)

int main(){
string hidden;

hidden = get_sentence();

replace_message(hidden);

return 0;
}

您的函数返回一个值,但您必须将其存储在变量中。你的replace_message函数也有错误,因为你正在为隐藏变量中的原始消息分配和未初始化的字符串public_string。请按以下步骤进行操作

void replace_message(string &hidden){

for(int i=0; i< hidden.length(); i++)
{
  if(hidden[i] != ' ')
     hidden[i] = '_';
}

cout << "The message is" << hidden << endl;
}

答案 2 :(得分:0)

您也可以避免循环并改为使用#include <iostream> #include <regex> #include <string> using namespace std; string get_sentence() { string hidden; cout << "Enter a message: "; getline (cin, hidden); return hidden; } string replace_message(string &hidden) { regex non_blank("\\S"); // selects everything but whitespace characters string public_string = regex_replace(hidden, non_blank, "_"); return public_string; } int main() { string hidden, public_string; hidden = get_sentence(); public_string = replace_message(hidden); cout << "The message is: " << public_string << endl; return 0; }

{{1}}