重载EString的>、>=、<、<=运算符

This commit is contained in:
Nomango 2017-12-12 11:28:12 +08:00
parent b40ca90a70
commit 4bc613929c
3 changed files with 43 additions and 19 deletions

View File

@ -11,26 +11,13 @@ int WINAPI WinMain(
if (!EApp::init(L"Demo", 250, 150)) if (!EApp::init(L"Demo", 250, 150))
return -1; return -1;
EString str; EString str = L"1245";
str += L"123"; EString str2 = L"1243";
str += L"4";
UINT h1 = str.hash();
EString string; bool b = str > str2;
string = string + L"Hello" + 2017 + L"!"; bool b2 = str >= str2;
string.append(L"Hello").append(2017).append(L"!"); bool b3 = str < str2;
bool b4 = str <= str2;
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();
auto scene = new EScene(); auto scene = new EScene();
EApp::enterScene(scene); EApp::enterScene(scene);

View File

@ -249,6 +249,38 @@ EString & e2d::EString::operator+=(const std::wstring &str)
return *this; 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 e2d::EString::hash() const
{ {
unsigned int hash = 0; unsigned int hash = 0;

View File

@ -182,6 +182,11 @@ public:
return (*this) += ss.str(); 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 &); friend std::wistream &operator>>(std::wistream &, EString &);
operator const wchar_t*() const { return _string; } operator const wchar_t*() const { return _string; }