#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; }