不能在 if 语句 - c++ 中使用 void func 直接将字符串转换为大写
Cant use the void func for converting string to Uppercase directly in if statement- c++
我在下面有无效功能:
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)
{
..
}
相关文章:
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 当字符串存储在变量中时,如何将字符串转换为wchar_t
- 如何将这个std::字符串转换为std::基本字符串
- 如何正确将字符串转换为标准::时间::system_clock::time_point?
- 如何在C++中将十六进制字符串转换为文本数据
- 需要帮助在 c++ 中将字符串转换为字符 ----错误 "const char *" 类型的值不能用于初始化 "char" 类型的实体
- 如何从字符串转换为双精度*
- C++:如何将 unix 时间的字符串转换为 *tm?(使用时间错误:"cannot convert 'String' to 'tm*' ")
- 如何在C++中将 Python 字符串转换为其转义版本?
- 如何在 C++11 中将标准::字符串转换为标准::u32字符串?
- 如何将整数字符串转换为整数的二维向量?
- 使用 "stringstream " 将字符串转换为整数
- 将字符串转换为浮点数或整数,而无需使用内置函数(如 atoi 或 atof)
- 将文件复制到自定义位置,存在字符串转换问题
- 将ANSI C字符串转换为UNICODE
- 如何将节点 V8 字符串转换为 C++ 字符串
- 在C++中将字符串转换为双精度,而无需科学记数法
- 使用从文件(stod、strtod、atof)中提取的数据C++从字符串转换为双精度.csv
- 如何在C++中将字符串转换为双精度?
- 将字符串转换为无符号字符数组/字节数组