123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #include <cstring>
- #include <cstdio>
- #include "utils/String.h"
- String::String() : length(0) {
- data[0] = '\0';
- }
- String::String(const char* str) : length(0) {
- for(; length < MAX_LENGTH - 1 && str[length] != '\0'; length++) {
- data[length] = str[length];
- }
- data[length] = '\0';
- }
- bool String::operator==(const String& other) const {
- return length == other.length && strcmp(data, other.data) == 0;
- }
- bool String::operator!=(const String& other) const {
- return !(*this == other);
- }
- String::operator const char*() const {
- return data;
- }
- char String::operator[](uint index) const {
- return data[index];
- }
- uint String::getLength() const {
- return length;
- }
- String& String::append(char c) {
- if(length < MAX_LENGTH - 1) {
- data[length++] = c;
- data[length] = '\0';
- }
- return *this;
- }
- String& String::append(const char* str) {
- for(uint i = 0; length < MAX_LENGTH - 1 && str[i] != '\0'; length++, i++) {
- data[length] = str[i];
- }
- data[length] = '\0';
- return *this;
- }
- String& String::appendFormat(const char* format, void* value) {
- uint left = MAX_LENGTH - length;
- uint written = snprintf(data + length, left, format, value);
- if(written < left) {
- length += written;
- } else {
- length = MAX_LENGTH;
- }
- return *this;
- }
- String& String::append(uint i) {
- uint left = MAX_LENGTH - length;
- uint written = snprintf(data + length, left, "%u", i);
- if(written < left) {
- length += written;
- } else {
- length = MAX_LENGTH;
- }
- return *this;
- }
- String& String::append(int i) {
- uint left = MAX_LENGTH - length;
- uint written = snprintf(data + length, left, "%d", i);
- if(written < left) {
- length += written;
- } else {
- length = MAX_LENGTH;
- }
- return *this;
- }
- String& String::append(float f) {
- uint left = MAX_LENGTH - length;
- uint written = snprintf(data + length, left, "%.2f", f);
- if(written < left) {
- length += written;
- } else {
- length = MAX_LENGTH;
- }
- return *this;
- }
- String& String::append(bool b) {
- return append(b ? "true" : "false");
- }
|