这是参考Synxis的以下答案。
假设,我必须打印字符串“cbaa”的所有子串。为此,我必须调用这样的方法:
findAllSubstrings2("cbaa");
如果我从用户那里取一个字符串,并执行以下操作:
string s;
cin>>s;
findAllSubstrings2(s);
它出现以下错误:
[Error] cannot convert 'std::string {aka std::basic_string<char>}' to 'const char*' for argument '1' to 'void findAllSubstrings2(const char*)'
为什么会这样?
答案 0 :(得分:2)
正如错误消息所示,当您尝试传递findAllSubstrings2
类型的参数时,函数const char *
的参数被声明为具有类型std::string
string s;
//...
findAllSubstrings2(s);
您应该使用类c_str
的成员函数data
或std::string
(从C ++ 11开始)。例如
findAllSubstrings2(s.c_str());
答案 1 :(得分:1)
你使用string,在函数中是char尝试使用char [] s;
答案 2 :(得分:1)
答案 3 :(得分:0)
您可能应该更改函数参数的类型。有些想法:
void findAllSubstrings2(string s){
//... function implementation...
}