-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathString.h
More file actions
108 lines (79 loc) · 3.03 KB
/
String.h
File metadata and controls
108 lines (79 loc) · 3.03 KB
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
#pragma once
#include <iostream>
#include <vector>
struct IStringable
{
virtual void ToString() = 0;
};
class String
{
public:
String();
String(char c);
String(const char* string);
String(const String& string);
~String();
int Count(char c) const noexcept;
int FirstIndexOf(char c) const noexcept;
int LastIndexOf(char c) const noexcept;
unsigned Length() const noexcept;
bool Contains(char c) const noexcept;
bool Contains(const String& string) const noexcept;
bool IsAlphabet() const noexcept;
bool IsAlphanum() const noexcept;
bool IsEmpty() const noexcept;
bool IsLower() const noexcept;
bool IsNumber() const noexcept;
bool IsUpper() const noexcept;
const char* ToRawString() const noexcept;
String Substring(int start, int length) const;
String Strip() const noexcept;
String Strip(char c) const noexcept;
String Lstrip() const noexcept;
String Lstrip(char c) const noexcept;
String Rstrip() const noexcept;
String Rstrip(char c) const noexcept;
String RemoveAt(int index) const;
String RemoveFirst(char c) const noexcept;
String RemoveLast(char c) const noexcept;
String RemoveAll(char c) const noexcept;
String ReplaceAt(int index, char c) const;
String ReplaceFirst(char before, char after) const noexcept;
String ReplaceLast(char before, char after) const noexcept;
String ReplaceAll(char before, char after) const noexcept;
String ToLower() const noexcept;
String ToUpper() const noexcept;
String ToggleCase() const noexcept;
std::vector<String> Split(char c) const;
static const String& Empty() noexcept;
String& operator =(const String& string);
String& operator +=(const String& string);
String& operator *=(int n);
char operator[](int index) const;
char& operator[](int index);
explicit operator char* () const;
explicit operator const char*() const;
friend String operator +(const String& a, const String& b);
friend String operator +(const String& a, char b);
friend String operator +(char a, const String& b);
friend String operator +(const String& a, const char* b);
friend String operator +(const char* a, const String& b);
friend String operator *(const String& str, unsigned n);
friend String operator *(unsigned n, const String& string);
friend bool operator ==(const String& a, const String& b);
friend bool operator ==(const String& a, const char* b);
friend bool operator ==(const char* a, const String& b);
friend bool operator ==(const String& str, char c);
friend bool operator ==(char c, const String& string);
friend bool operator !=(const String& a, const String& b);
friend bool operator !=(const String& a, const char* b);
friend bool operator !=(const char* a, const String& b);
friend bool operator !=(const String& str, char c);
friend bool operator !=(char c, const String& str);
friend std::ostream& operator <<(std::ostream& stream, const String& string);
friend std::istream& operator >>(std::istream& stream, String& string);
private:
char* _buffer;
unsigned _length;
String(char* chars, unsigned length); // potentially dangerous constructor, meant for internal use
};