Golias Engine
A C++ 20 'game engine' built with SDL3 with wide platform support.
str.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "type_alias.h"
4 #include <string>
5 #include "SDL3/SDL_stdinc.h"
6 
7 
8 class String : public std::string {
9 public:
10  using std::string::string;
11 
12  String(const std::string& str) : std::string(str) {}
13 
14  String(std::string&& str) : std::string(std::move(str)) {}
15 
16  size_t length() const { return size(); }
17 
18  bool is_empty() const { return empty(); }
19 
20  String to_lower() const;
21 
22  String to_upper() const;
23 
24  String substr(size_t from, size_t len = std::string::npos) const;
25 
26  int find(const String& what, int from = 0) const;
27 
28  int find(char what, int from =0) const;
29 
30  int rfind(const String& what) const;
31 
32  int findn(const String& what, int from = 0) const;
33 
34  bool begins_with(const String& text) const;
35 
36  bool ends_with(const String& text) const;
37 
38  bool contains(const String& what) const;
39 
40  String replace(const String& what, const String& forwhat) const;
41 
42  String replacen(const String& what, const String& forwhat) const;
43 
44  String strip_edges() const;
45 
46  String lstrip(const String& chars = " \t\n\r") const;
47 
48  String rstrip(const String& chars = " \t\n\r") const;
49 
50  Vector<String> split(const char delimiter) const;
51 
52  String join(const Vector<String>& parts) const;
53 
54  String insert(size_t position, const String& what) const;
55 
56  String reverse() const;
57 
58  template <typename... Args>
59  static String format(const char* fmt, Args... args);
60 
61  size_t hash() const;
62 
63  String operator+(const String& other) const;
64 
65  String operator+(const char* other) const;
66 };
67 
68 
69 namespace std {
70  template<>
71  struct hash<String> {
72  size_t operator()(const String& s) const noexcept {
73  return hash<std::string>{}(s);
74  }
75  };
76 }
77 
78 template <typename... Args>
79 inline String String::format(const char* fmt, Args... args) {
80  char buffer[1024];
81  SDL_snprintf(buffer, sizeof(buffer), fmt, args...);
82  return buffer;
83 }
Definition: str.h:8
bool is_empty() const
Definition: str.h:18
size_t hash() const
Definition: str.cpp:148
String reverse() const
Definition: str.cpp:141
String insert(size_t position, const String &what) const
Definition: str.cpp:135
String to_lower() const
Definition: str.cpp:4
String to_upper() const
Definition: str.cpp:10
String replace(const String &what, const String &forwhat) const
Definition: str.cpp:57
Vector< String > split(const char delimiter) const
Definition: str.cpp:109
String strip_edges() const
Definition: str.cpp:82
String rstrip(const String &chars=" \t\n\r") const
Definition: str.cpp:101
int rfind(const String &what) const
Definition: str.cpp:30
String(std::string &&str)
Definition: str.h:14
String(const std::string &str)
Definition: str.h:12
int findn(const String &what, int from=0) const
Definition: str.cpp:35
static String format(const char *fmt, Args... args)
Definition: str.h:79
String lstrip(const String &chars=" \t\n\r") const
Definition: str.cpp:91
String operator+(const String &other) const
Definition: str.cpp:152
bool begins_with(const String &text) const
Definition: str.cpp:42
int find(const String &what, int from=0) const
Definition: str.cpp:20
String substr(size_t from, size_t len=std::string::npos) const
Definition: str.cpp:16
size_t length() const
Definition: str.h:16
String replacen(const String &what, const String &forwhat) const
Definition: str.cpp:67
String join(const Vector< String > &parts) const
Definition: str.cpp:123
bool contains(const String &what) const
Definition: str.cpp:53
bool ends_with(const String &text) const
Definition: str.cpp:46
Definition: vector.h:10
Definition: str.h:69
size_t operator()(const String &s) const noexcept
Definition: str.h:72