1 #ifndef _UTIL_STRING_H 2 #define _UTIL_STRING_H 3 4 #include <stddef.h> 5 6 typedef struct str_t { 7 size_t len; 8 char* data; 9 } str; 10 11 void str_create(str *string); 12 void str_create_from_cstr(str *string, const char *cstr); 13 void str_create_from_data(str *string, const char *data, size_t len); 14 void str_free(str *string); 15 16 size_t str_size(const str *string); 17 18 void str_substr(str *dst, const str *src, size_t start, size_t end); 19 void str_copy(str *dst, const str *src); 20 void str_append(str *dst, const str *src); 21 void str_append_c(str *dst, const char *src); 22 void str_prepend(str *dst, const str *src); 23 void str_remove_at(str *string, size_t pos); 24 25 int str_first_of(const str *string, char find, size_t *pos); 26 int str_next_of(const str *string, char find, size_t *pos); 27 int str_last_of(const str *string, char find, size_t *pos); 28 29 int str_equal(const str *string, const str *string_b); 30 31 void str_toupper(str *string); 32 void str_tolower(str *string); 33 34 char str_at(const str *string, size_t pos); 35 int str_cmp(const str *string, const str *string_b); 36 37 int str_to_int(const str *string, int *result); 38 int str_to_long(const str *string, long *result); 39 int str_to_float(const str *string, float *result); 40 const char* str_c(const str *string); 41 42 #endif // _UTIL_STRING_H 43