gpt4 book ai didi

C++ - 为学校构建我自己的 String 类,无法正确重载 < 运算符

转载 作者:行者123 更新时间:2023-11-27 23:59:45 26 4
gpt4 key购买 nike

这就是我现在拥有的(str 是一个动态的、以 null 结尾的 char 数组):

bool String::operator<(const String& rhs) const {
if (str == rhs.str)
return false;
int i = 0;
while (str[i] != '\0' && rhs[i] != '\0') {
if (str[i] > rhs[i])
return false;
++i;
}
return true;
}

这通过了大多数测试,但在以下方面失败了:

String s1("abc");
String s2("abcde");

assert(!(s2 < s1));

无论我如何改变功能,它似乎总是无法通过一个或另一个测试。你会如何重载这个运营商?基本上我只需要比较两个以 null 结尾的 char 数组,看看哪个较小(没有任何库)。

最佳答案

您可以利用以 null 结尾的字符串将基本算法简化为:

  1. 当两个字符串的第 n 个字符相同时(从 0 开始递增 n):
  2. 如果两个字符串的第n个字符都是'\0'则字符串显然相同,否则:
  3. 否则,将第n个字符作为无符号值进行比较,以确定比较结果。

关于C++ - 为学校构建我自己的 String 类,无法正确重载 < 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40063388/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com