我必须编写一个称为“关系”的函数来比较两个字符串。问题表明我仅限于使用C ++关系运算符比较单个字符。
这是我到目前为止的位置,但是我只是遇到错误。
char relation (const std::string& s1, const std::string& s2) {
if(&s1[0] == "" || &s2[0] == ""){
return '=';
}
else if(&s1[0] < &s2[0]){
return '<';
}
else if(&s1[0] > &s2[0]){
return '>';
}
else{
std::string new_s1 = &s1.substr(1);
std::string new_s2 = &s2.substr(1);
return relation(s1,s2);
}
}
当我运行它时,这些是我得到的错误。通过更改一些东西,我可以使其运行,但是我假设它进入了无限循环,因为它需要一段时间才能运行,并且会崩溃。
没有理由占用所有地址。您应该使用s1[0]
,而不是&s1[0]
。
执行递归调用时,需要使用new_s1
和new_s2
作为参数,而不是s1
和s2
。
您测试字符串是否为空的方法是错误的。s1[0]
是一个char
,而不是字符串,因此您不应将其与进行比较""
。您还报告=
,如果任一字符串为空; 仅当两个字符串均为空时它们才相等。
char relation (const std::string& s1, const std::string& s2) {
if(s1[0] == '\0' && s2[0] == '\0'){
return '=';
}
else if(s1[0] < s2[0]){
return '<';
}
else if(s1[0] > s2[0]){
return '>';
}
else{
std::string new_s1 = s1.substr(1);
std::string new_s2 = s2.substr(1);
return relation(new_s1, new_s2);
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句