我是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;
}
答案 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}}