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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
#ifndef __E_STRING__
#define __E_STRING__
#include <string>
#include <stdarg.h>
#include <stdio.h>
#include "eerror.h"
int strnicmp(const char*, const char*, int);
class eString : public std::string
{
public:
// constructors
inline eString() {}
inline eString(const char* p);
inline eString(const char* p, int cnt);
inline eString(const std::string &s);
// methods
inline eString left(unsigned int len) const;
inline eString mid(unsigned int index, unsigned int len=(unsigned)-1) const;
inline eString right(unsigned int len) const;
bool isNull() const;
// operators
inline operator bool() const;
inline bool operator!() const;
// methods with implementation in estring.cpp
eString& sprintf(char *fmt, ...);
eString& setNum(int val, int sys=10);
eString& removeChars(const char fchar);
eString& strReplace(const char* fstr, const eString& rstr);
eString& upper();
int icompare(const eString& s);
};
eString convertDVBUTF8(unsigned char *data, int len, int table=5);
eString convertUTF8DVB(const eString &string); // with default ISO8859-5
eString convertLatin1UTF8(const eString &string);
int isUTF8(const eString &string);
/////////////////////////////////////////////// Copy Constructors ////////////////////////////////////////////////
inline eString::eString(const std::string &s)
:std::string(s)
{
}
inline eString::eString(const char* p)
:std::string(p?p:"") // when the char* p is null, than use ""... otherwise crash...
{
}
inline eString::eString(const char* p, int cnt)
:std::string(p, cnt)
{
}
///////////////////////////////////////// eString operator bool /////////////////////////////////////////////////
inline eString::operator bool() const
{
// Returns a bool that contains true if the string longer than 0 Character otherwise false;
return !empty();
}
///////////////////////////////////////// eString operator! ////////////////////////////////////////////////////
inline bool eString::operator!() const
{
// Returns a bool that contains true if the string ist empty otherwise false;
return empty();
}
///////////////////////////////////////// eString left //////////////////////////////////////////////////////////
inline eString eString::left(unsigned int len) const
{
// Returns a substring that contains the len leftmost characters of the string.
// The whole string is returned if len exceeds the length of the string.
return len >= length() ? *this : substr(0, len);
}
//////////////////////////////////////// eString mid ////////////////////////////////////////////////////////////
inline eString eString::mid(unsigned int index, unsigned int len) const
{
// Returns a substring that contains the len characters of this string, starting at position index.
// Returns a null string if the string is empty or index is out of range. Returns the whole string from index if index+len exceeds the length of the string.
register unsigned int strlen = length();
if (index >= strlen)
return eString();
if (len == (unsigned)-1)
return substr(index);
if (strlen < index + len)
len = strlen-index;
return substr(index, len);
}
//////////////////////////////////////// eString right ////////////////////////////////////////////////////////////
inline eString eString::right(unsigned int len) const
{
// Returns a substring that contains the len rightmost characters of the string.
// The whole string is returned if len exceeds the length of the string.
register unsigned int strlen = length();
return len >= strlen ? *this : substr(strlen-len, len);
}
inline bool eString::isNull() const
{
// Returns a bool, that contains true, when the internal char* is null (only when a string ist empty constructed)
return !c_str();
}
#endif // __E_STRING__
|