打印字符串的所有子字符串时出错

时间:2015-06-09 09:25:47

标签: c++ string substring

这是参考Synxis的以下答案。

https://codereview.stackexchange.com/questions/18684/find-all-substrings-interview-query-in-c/18715#18715

假设,我必须打印字符串“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*)'

为什么会这样?

4 个答案:

答案 0 :(得分:2)

正如错误消息所示,当您尝试传递findAllSubstrings2类型的参数时,函数const char *的参数被声明为具有类型std::string

string s;
//...
findAllSubstrings2(s);

您应该使用类c_str的成员函数datastd::string(从C ++ 11开始)。例如

findAllSubstrings2(s.c_str());

答案 1 :(得分:1)

你使用string,在函数中是char尝试使用char [] s;

答案 2 :(得分:1)

在传递参数

时在字符串类中使用c_str() method
string s;
cin>>s;
findAllSubstrings2(s.c_str());

答案 3 :(得分:0)

您可能应该更改函数参数的类型。有些想法:

void findAllSubstrings2(string s){
 //... function implementation...
}