我收到“没有匹配的函数调用”的错误提示,为什么?提前致谢。
#include <iostream>
#include <string>
using namespace std;
void redactDigits(string & s);
int main(int argc, const char * argv[])
{
redactDigits("hello");
return 0;
}
void redactDigits(string & s){
double stringLength = 0;
string copyString;
stringLength = s.size();
for (int i = 0; i < stringLength + 1; i++) {
if (atoi(&s[i])) {
copyString.append(&s[i]);
}
else {
copyString.append("*");
}
}
s = copyString;
cout << s;
}
最佳答案
您在函数声明中缺少void
。此外,您需要传递const
引用,以便能够绑定(bind)到临时目录:
void redactDigits(const string & s);
^^^^ ^^^^^
没有
const
,此调用是非法的:redactDigits("hello");
尽管某些编译器具有非标准扩展名,这些扩展名允许非常量引用绑定(bind)到临时文件。
编辑:由于您试图在函数内部修改输入字符串,因此另一种解决方案是保留原始函数签名,然后将其传递为
std::string
而不是以空终止的字符串文字,或者仅返回std::string:std::string redactDigits(const std::string& s)
{
...
return copyString;
}
然后
std::string s = redactDigits("hello");