#include <iostream>
#include <string>
int operateOnChar(const char& c, const std::string& str) {
int count = 0;
for (char ch : str) {
if (ch == c) {
count++;
}
}
if (count % 2 == 0) {
return count;
} else {
return str.length();
}
}
传递常量时可能遇到的问题及解决办法
- 传递字符串字面量时的类型问题:在C++中,字符串字面量的类型是
const char[N]
,传递给函数时会退化为const char*
。如果函数参数定义为const char*
,在使用一些std::string
相关功能时会不方便。解决办法是使用std::string
类型来接收字符串,如上述代码中使用const std::string&
接收字符串常量,这样既可以接收std::string
对象,也可以接收字符串字面量,同时避免了不必要的拷贝。
- 字符常量传递问题:字符常量在传递时一般不会有太大问题,但如果不小心将字符常量写成字符串常量(例如
'a'
写成"a"
),会导致类型不匹配错误。确保传递的字符常量是单引号括起来的单个字符。同时,使用const char&
来接收字符常量,可以避免在函数内部对字符常量的意外修改,并且在传递时效率更高(因为传递的是引用而不是值拷贝)。