如何从void函数输出字符串?

时间:2018-11-03 03:06:51

标签: c++ function void

我做了一个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')

2 个答案:

答案 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}}