【发布时间】:2016-04-28 14:20:16
【问题描述】:
我必须编写一个名为关系的函数来比较两个字符串。问题表明我仅限于使用 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。 -
(1) 请更好地描述您的问题,而不是“只是得到错误”和“只是崩溃”。 (2)
if(&s1[0] == "" || &s2[0] == ""),即使你摆脱了&s,也是错误的。 -
我相信我已经解决了我用 if(s1[0] == '\0' && s2[0] == '\0') 并且它现在起作用了