不能在 if 语句 - c++ 中使用 void func 直接将字符串转换为大写

Cant use the void func for converting string to Uppercase directly in if statement- c++

本文关键字:字符串 转换 func void 语句 if c++ 不能      更新时间:2023-10-16

我在下面有无效功能:

void ToUppercase(std::string & data)
{
transform(data.begin(), data.end(), data.begin(), (int(*)(int))toupper);
}

如果我像这样使用 if 语句:

if (ToUppercase(str).find("AAA") != string::npos) // Do something;

它向我显示错误"表达式必须是类类型"。为什么我不能直接在 if 语句中使用 void func。不知何故,从 ToUpperWrite 函数返回值是不可行的。

正如您所声明的,ToUppercase(str)属于void类型。您不能在无效时调用成员访问操作员 (.(。

如果你想像这样链接调用,你也可以返回传递的引用

std::string & ToUppercase(std::string & data)
{
transform(data.begin(), data.end(), data.begin(), (int(*)(int))toupper);
return data;
}

如果您出于某种原因坚持返回void,那么您做您正在做的事情的唯一有效选择是:

ToUUppercase(str);
if(str.find("AAA") != std::string::npos)
{
}

find()std::string类的成员方法,但您返回的是void。 修改代码以返回std::string,以便可以对返回值调用find()

如果您的ToUppercase确实无法返回新字符串,您可以尝试以下操作:

ToUppercase(str);
if (str.find("AAA") != string::npos)
{
..
}