39 lines
636 B
C
39 lines
636 B
C
#pragma once
|
|
|
|
struct String {
|
|
|
|
size_t length;
|
|
char* data;
|
|
|
|
char operator[](int index) {
|
|
if (index < 0) {
|
|
return 0;
|
|
}
|
|
if (index < length) {
|
|
return data[index];
|
|
}
|
|
return 0;
|
|
}
|
|
};
|
|
|
|
String operator""_str(const char* str, size_t length) {
|
|
return { length, (char*)str };
|
|
}
|
|
|
|
void advance(String &s, int num = 1) {
|
|
int to_advance = min(s.length, num);
|
|
s.data = s.data + to_advance;
|
|
s.length = s.length - to_advance;
|
|
}
|
|
|
|
bool starts_with(String s, String start) {
|
|
if (s.length < start.length) {
|
|
return false;
|
|
}
|
|
for (int i = 0; i < start.length; i++) {
|
|
if (s[i] != start[i]) {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
} |