OMW  0.1.0
string.h
1 /*
2 author Oliver Blaser
3 date 18.08.2021
4 copyright MIT - Copyright (c) 2021 Oliver Blaser
5 */
6 
7 #ifndef OMW_STRING_H
8 #define OMW_STRING_H
9 
10 #include <string>
11 #include <utility>
12 #include <vector>
13 
14 namespace omw
15 {
20  constexpr char UTF8CP_00C4[] = "\xC3\x84";
23  constexpr char UTF8CP_00D6[] = "\xC3\x96";
24  constexpr char UTF8CP_00DC[] = "\xC3\x9C";
25  constexpr char UTF8CP_00E4[] = "\xC3\xA4";
26  constexpr char UTF8CP_00F6[] = "\xC3\xB6";
27  constexpr char UTF8CP_00FC[] = "\xC3\xBC";
29 
32  const char* const UTF8CP_Auml = omw::UTF8CP_00C4;
33  const char* const UTF8CP_Ouml = omw::UTF8CP_00D6;
34  const char* const UTF8CP_Uuml = omw::UTF8CP_00DC;
35  const char* const UTF8CP_auml = omw::UTF8CP_00E4;
36  const char* const UTF8CP_ouml = omw::UTF8CP_00F6;
37  const char* const UTF8CP_uuml = omw::UTF8CP_00FC;
39 
40  constexpr char pairtos_defaultSepChar = ';';
41  constexpr char hexStrDigits[] = "0123456789ABCDEF";
42  constexpr char toHexStr_defaultSepChar = 0x20;
43 
44 
45 
47  {
48  public:
50  StringReplacePair(const std::string& searchElement, const std::string& replaceElement);
51  StringReplacePair(const char searchElement, const std::string& replaceElement);
52  StringReplacePair(const std::string& searchElement, const char replaceElement);
53  StringReplacePair(const char searchElement, const char replaceElement);
54  virtual ~StringReplacePair() {}
55 
56  const std::string& search() const;
57  const std::string& replace() const;
58 
59  private:
60  std::string searchElem;
61  std::string replaceElem;
62  };
63 
64  class string : public std::string
65  {
66  public:
67  //static bool isValidUTF8(const omw::string& str);
68 
69  public:
70  string();
71  string(const char* str);
72  string(const std::string& str);
73  string(const char* first, const char* last);
74  virtual ~string() {}
75 
76  bool isInteger() const;
77  bool isUInteger() const;
78 
79  omw::string& replaceFirst(const omw::string& search, const omw::string& replace, size_type startPos = 0);
80  omw::string& replaceFirst(const omw::StringReplacePair& pair, size_type startPos = 0);
81 
82  omw::string& replaceAll(const omw::string& search, const omw::string& replace, size_type startPos = 0, size_type* nReplacements = nullptr);
83  omw::string& replaceAll(const omw::StringReplacePair& pair, size_type startPos = 0, size_type* nReplacements = nullptr);
84  omw::string& replaceAll(const std::vector<omw::StringReplacePair>& pairs, size_type startPos = 0, size_type* nReplacementsTotal = nullptr, std::vector<size_type>* nReplacements = nullptr);
85  omw::string& replaceAll(const omw::StringReplacePair* pairsBegin, const omw::StringReplacePair* pairsEnd, size_type startPos = 0, size_type* nReplacementsTotal = nullptr, std::vector<size_type>* nReplacements = nullptr);
86 
90  omw::string& makeLower_ascii();
91  omw::string& makeLower_asciiExt();
92  omw::string& makeUpper_ascii();
93  omw::string& makeUpper_asciiExt();
94  omw::string toLower_ascii() const;
95  omw::string toLower_asciiExt() const;
96  omw::string toUpper_ascii() const;
97  omw::string toUpper_asciiExt() const;
99 
100  omw::string& makeUrlEncoded();
101  omw::string toUrlEncoded() const;
102 
103  //bool isValidUTF8() const;
104  };
105 
106 
107 
108  omw::string to_string(bool value, bool textual = false);
109 
110  template<typename T1, typename T2>
111  std::string to_string(const std::pair<T1, T2>& value, char sepChar = pairtos_defaultSepChar);
112 
113  template std::string to_string(const std::pair<int, int>&, char);
114  template std::string to_string(const std::pair<long, long>&, char);
115  template std::string to_string(const std::pair<long long, long long>&, char);
116  template std::string to_string(const std::pair<unsigned, unsigned>&, char);
117  template std::string to_string(const std::pair<unsigned long, unsigned long>&, char);
118  template std::string to_string(const std::pair<unsigned long long, unsigned long long>&, char);
119  template std::string to_string(const std::pair<float, float>&, char);
120  template std::string to_string(const std::pair<double, double>&, char);
121  template std::string to_string(const std::pair<long double, long double>&, char);
122 
123 
124 
125  bool stob(const omw::string& boolStr);
126  std::pair<int, int> stoipair(const std::string& str, char sepChar = pairtos_defaultSepChar);
127  //std::pair<long, long> stolpair(const std::string& str, char sepChar = pairtos_defaultSepChar);
128  //std::pair<long long, long long> stollpair(const std::string& str, char sepChar = pairtos_defaultSepChar);
129  //std::pair<unsigned long, unsigned long> stoulpair(const std::string& str, char sepChar = pairtos_defaultSepChar);
130  //std::pair<unsigned long long, unsigned long long> stoullpair(const std::string& str, char sepChar = pairtos_defaultSepChar);
131  //std::pair<float, float> stofpair(const std::string& str, char sepChar = pairtos_defaultSepChar);
132  //std::pair<double, double> stodpair(const std::string& str, char sepChar = pairtos_defaultSepChar);
133  //std::pair<long double, long double> stoldpair(const std::string& str, char sepChar = pairtos_defaultSepChar);
134 
135 
136 
137 
138  bool isInteger(const std::string& str);
139  bool isUInteger(const std::string& str);
140 
141 
142 
143  omw::string toHexStr(int8_t value);
144  omw::string toHexStr(uint8_t value);
145  omw::string toHexStr(int16_t value);
146  omw::string toHexStr(uint16_t value);
147  omw::string toHexStr(int32_t value);
148  omw::string toHexStr(uint32_t value);
149  omw::string toHexStr(int64_t value);
150  omw::string toHexStr(uint64_t value);
151  omw::string toHexStr(const std::vector<char>& data, char sepChar = toHexStr_defaultSepChar);
152  omw::string toHexStr(const std::vector<uint8_t>& data, char sepChar = toHexStr_defaultSepChar);
153  omw::string toHexStr(const char* data, size_t count, char sepChar = toHexStr_defaultSepChar);
154  omw::string toHexStr(const uint8_t* data, size_t count, char sepChar = toHexStr_defaultSepChar);
155 
157 }
158 
159 #endif // OMW_STRING_H
omw::StringReplacePair
Definition: string.h:47
std::string
C++ standard string. See std::basic_string for further detail.
Definition: linkToStd.dox:15
omw::stob
bool stob(const omw::string &boolStr)
Definition: string.cpp:318
omw::string::replaceAll
omw::string & replaceAll(const omw::string &search, const omw::string &replace, size_type startPos=0, size_type *nReplacements=nullptr)
Definition: string.cpp:126
omw::stoipair
std::pair< int, int > stoipair(const std::string &str, char sepChar=pairtos_defaultSepChar)
Definition: string.cpp:339
omw::string::replaceFirst
omw::string & replaceFirst(const omw::string &search, const omw::string &replace, size_type startPos=0)
Definition: string.cpp:106
omw::string
Definition: string.h:65
omw
Main namespace.