#pragma once //#include //#include //#include //#include #include "system/base.hpp" class xstring { private: //wchar_t* data; void * data; public: xstring(); xstring(const xstring& rhs); xstring(int val); xstring(double val); xstring(LPARAM val); xstring(wchar_t* val, bool shouldSysFree = false); xstring(const wchar_t* val, bool shouldSysFree = false); ~xstring(); public: operator const wchar_t*() { return c_str(); } xstring& operator =(const xstring& rhs); xstring& operator =(const wchar_t* rhs); bool operator ==(const wchar_t* rhs); bool operator >=(const wchar_t* rhs); bool operator >(const wchar_t* rhs); bool operator <=(const wchar_t* rhs); bool operator <(const wchar_t* rhs); bool operator !=(const wchar_t* rhs); bool operator ==(const xstring &rhs); bool operator >=(const xstring& rhs); bool operator >(const xstring& rhs); bool operator <=(const xstring& rhshs); bool operator <(const xstring& rhs); bool operator !=(const xstring& rhs); operator bool(); public: const wchar_t* c_str(bool bclone = false) const; int length(); public: wchar_t* sure(int len); public: //static const wchar_t* concat(const wchar_t* lhs, const wchar_t* rhs); wchar_t at(int index); //static xstring concat(xstring && lhs, xstring && rhs); xstring concat(const wchar_t* rhs); xstring concat(xstring&& rhs); xstring operator +(const wchar_t* rhs); xstring operator +(xstring rhs); xstring& operator +=(const wchar_t* rhs); xstring& operator +=(xstring rhs); bool isEmpty(); int find(const xstring & str); int find(const wchar_t* str); int find(const wchar_t* str,int pos); xstring mid(int start, int len); xstring left(int len); xstring right(int len); int toInt(); __int64 toInt64(); double toDouble(); xstring toUpper(); xstring toLower(); xstring trim(); xstring ltrim(); xstring rtrim(); bool isNumber(); xstring replace(const wchar_t* from, const wchar_t* to); xstring replace(const wchar_t* from, const wchar_t* to, int pos); }; xstring operator +(const wchar_t* lhs, const xstring& rhs); class bstring : public xstring { public: bstring(const wchar_t* val):xstring(val,true){} };