我做了一个void函数,当前正在尝试通过它传递字符串变量来输出结果,但是会发生此错误,我不确定它的含义。我过去曾使用此代码来输出void函数,所以我不确定为什么这与以前不同。在if循环内的一行下面是错误源。
if(choice == 'r')
{
cout << "Edited text: " << replaceExclamation(a) << endl;
}
void replaceExclamation(string usrStr)
{
for(int i = 0; i < usrStr.length(); ++i )
{
if(usrStr.at(i) == '!')
{
usrStr.insert(i, ".");
}
}
}
/// 错误显示为:错误:'operator <<'不匹配(操作数类型为'std :: basic_ostream'和'void')
答案 0 :(得分:1)
void
表示该函数不返回任何值。
因此,cout << "Edited text: " << replaceExclamation(a) << endl;
是错误的。
要这样编写,您必须更改函数以返回string
值。
string replaceExclamation(string usrStr)
{
for(int i = 0; i < usrStr.length(); ++i )
{
if(usrStr.at(i) == '!')
{
usrStr.insert(i, ".");
}
}
return usrStr;
}
答案 1 :(得分:0)
在您的代码中,修改将应用于局部变量,并且不会反映在主变量中。像这样使用引用传递:
void replaceExclamation(string& usrStr ) // Pass parameter by reference
{
for(int i = 0; i < usrStr.length(); ++i )
{
if(usrStr.at(i) == '!')
{
usrStr.insert(i, ".");
}
}
}
和
{{1}}