|
|
|
@ -3,6 +3,8 @@ |
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
#include <cstring> |
|
|
|
|
#include <algorithm> |
|
|
|
|
|
|
|
|
|
#include "CString.h" |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
@ -40,7 +42,7 @@ bool CString::operator==(const CString &source) const { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 以上情况都不符合时才进行逐字比较
|
|
|
|
|
int compareLength = source.length < length ? source.length : length; |
|
|
|
|
int compareLength = std::min(source.length, length); |
|
|
|
|
for (int i = 0; i < compareLength; ++i) { |
|
|
|
|
if (data[i] != source.data[i]) { |
|
|
|
|
return false; |
|
|
|
@ -107,17 +109,13 @@ CString::CString(const CString &source) : CString(source.data, source.length) {} |
|
|
|
|
* 按照字典顺序逐字对比 |
|
|
|
|
*/ |
|
|
|
|
bool CString::operator<(const CString &source) const { |
|
|
|
|
// 这部分类似于前边==重载的前置判断
|
|
|
|
|
if (source.length != length || data == nullptr) { |
|
|
|
|
// 这部分类似于前边==重载的前置判断,如果本对象数据为null或者两对象数据是一回事就直接false
|
|
|
|
|
if (data == nullptr || (source.length != length && source.data == data)) { |
|
|
|
|
return false; |
|
|
|
|
} else { |
|
|
|
|
if (source.data == data) { |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 以上情况都不符合时才进行逐字比较
|
|
|
|
|
int compareLength = source.length < length ? source.length : length; |
|
|
|
|
int compareLength = std::min(source.length, length); |
|
|
|
|
for (int i = 0; i < compareLength; ++i) { |
|
|
|
|
if (data[i] < source.data[i]) { |
|
|
|
|
return true; |
|
|
|
|