diff --git a/core/string/ustring.cpp b/core/string/ustring.cpp index 48d900d1969..c879cf99008 100644 --- a/core/string/ustring.cpp +++ b/core/string/ustring.cpp @@ -550,18 +550,7 @@ bool String::operator==(const char32_t *p_str) const { return true; } - int l = length(); - - const char32_t *dst = get_data(); - - /* Compare char by char */ - for (int i = 0; i < l; i++) { - if (p_str[i] != dst[i]) { - return false; - } - } - - return true; + return memcmp(ptr(), p_str, len * sizeof(char32_t)) == 0; } bool String::operator==(const String &p_str) const { @@ -572,23 +561,11 @@ bool String::operator==(const String &p_str) const { return true; } - int l = length(); - - const char32_t *src = get_data(); - const char32_t *dst = p_str.get_data(); - - /* Compare char by char */ - for (int i = 0; i < l; i++) { - if (src[i] != dst[i]) { - return false; - } - } - - return true; + return memcmp(ptr(), p_str.ptr(), length() * sizeof(char32_t)) == 0; } bool String::operator==(const StrRange &p_str_range) const { - int len = p_str_range.len; + const int len = p_str_range.len; if (length() != len) { return false; @@ -597,17 +574,7 @@ bool String::operator==(const StrRange &p_str_range) const { return true; } - const char32_t *c_str = p_str_range.c_str; - const char32_t *dst = &operator[](0); - - /* Compare char by char */ - for (int i = 0; i < len; i++) { - if (c_str[i] != dst[i]) { - return false; - } - } - - return true; + return memcmp(ptr(), p_str_range.c_str, len * sizeof(char32_t)) == 0; } bool operator==(const char *p_chr, const String &p_str) { @@ -3573,25 +3540,15 @@ int String::rfindn(const char *p_str, int p_from) const { } bool String::ends_with(const String &p_string) const { - int l = p_string.length(); + const int l = p_string.length(); if (l > length()) { return false; } - if (l == 0) { return true; } - const char32_t *p = &p_string[0]; - const char32_t *s = &operator[](length() - l); - - for (int i = 0; i < l; i++) { - if (p[i] != s[i]) { - return false; - } - } - - return true; + return memcmp(ptr() + (length() - l), p_string.ptr(), l * sizeof(char32_t)) == 0; } bool String::ends_with(const char *p_string) const { @@ -3620,25 +3577,15 @@ bool String::ends_with(const char *p_string) const { } bool String::begins_with(const String &p_string) const { - int l = p_string.length(); + const int l = p_string.length(); if (l > length()) { return false; } - if (l == 0) { return true; } - const char32_t *p = &p_string[0]; - const char32_t *s = &operator[](0); - - for (int i = 0; i < l; i++) { - if (p[i] != s[i]) { - return false; - } - } - - return true; + return memcmp(ptr(), p_string.ptr(), l * sizeof(char32_t)) == 0; } bool String::begins_with(const char *p_string) const {