xj qian
2024-06-25 58c129e8f21f79396a822eaeadd78edf281b52a0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#pragma once
 
//#include <stdio.h>
//#include <stdlib.h>
//#include <tchar.h>
//#include <memory.h>
#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(wchar_t* from, 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){}
};