From 4bc613929c4acc52be6dd5156e4682313f3a2839 Mon Sep 17 00:00:00 2001 From: Nomango <569629550@qq.com> Date: Tue, 12 Dec 2017 11:28:12 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E8=BD=BDEString=E7=9A=84>=E3=80=81>?= =?UTF-8?q?=3D=E3=80=81<=E3=80=81<=3D=E8=BF=90=E7=AE=97=E7=AC=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Demo/main.cpp | 25 ++++++------------------- Easy2D/Common/EString.cpp | 32 ++++++++++++++++++++++++++++++++ Easy2D/ecommon.h | 5 +++++ 3 files changed, 43 insertions(+), 19 deletions(-) diff --git a/Demo/main.cpp b/Demo/main.cpp index 5f9fb51f..6ff350d7 100644 --- a/Demo/main.cpp +++ b/Demo/main.cpp @@ -11,26 +11,13 @@ int WINAPI WinMain( if (!EApp::init(L"Demo", 250, 150)) return -1; - EString str; - str += L"123"; - str += L"4"; - UINT h1 = str.hash(); + EString str = L"1245"; + EString str2 = L"1243"; - EString string; - string = string + L"Hello" + 2017 + L"!"; - string.append(L"Hello").append(2017).append(L"!"); - - EString str2; - str2 += 1; - str2 += 2L; - str2 += 2.3; - str2 += 4.6f; - UINT h2 = str2.hash(); - - str2 += std::wstring(L"sdf"); - EString str3; - str3 += str2 + str; - UINT h3 = str3.hash(); + bool b = str > str2; + bool b2 = str >= str2; + bool b3 = str < str2; + bool b4 = str <= str2; auto scene = new EScene(); EApp::enterScene(scene); diff --git a/Easy2D/Common/EString.cpp b/Easy2D/Common/EString.cpp index 04417b72..dc56ba42 100644 --- a/Easy2D/Common/EString.cpp +++ b/Easy2D/Common/EString.cpp @@ -249,6 +249,38 @@ EString & e2d::EString::operator+=(const std::wstring &str) return *this; } +bool e2d::EString::operator<(EString const &str) const +{ + for (int i = 0; i <= _size; i++) + if (_string[i] != str._string[i]) + return _string[i] < str[i]; + return false; +} + +bool e2d::EString::operator<=(EString const &str) const +{ + for (int i = 0; i <= _size; i++) + if (_string[i] != str._string[i]) + return _string[i] < str[i]; + return true; +} + +bool e2d::EString::operator>(EString const &str) const +{ + for (int i = 0; i <= _size; i++) + if (_string[i] != str._string[i]) + return _string[i] > str[i]; + return false; +} + +bool e2d::EString::operator>=(EString const &str) const +{ + for (int i = 0; i <= _size; i++) + if (_string[i] != str._string[i]) + return _string[i] > str[i]; + return true; +} + unsigned int e2d::EString::hash() const { unsigned int hash = 0; diff --git a/Easy2D/ecommon.h b/Easy2D/ecommon.h index 2efcbcad..a5d9a5c9 100644 --- a/Easy2D/ecommon.h +++ b/Easy2D/ecommon.h @@ -182,6 +182,11 @@ public: return (*this) += ss.str(); } + bool operator < (EString const&) const; + bool operator <= (EString const&) const; + bool operator > (EString const&) const; + bool operator >= (EString const&) const; + friend std::wistream &operator>>(std::wistream &, EString &); operator const wchar_t*() const { return _string; }