# SmartString **Repository Path**: vivooppo/SmartString ## Basic Information - **Project Name**: SmartString - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-04-28 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SmartString A Lightweight, Fast, and Safe C Library Meant to Mimic String Functionality Present in C++ ## Ideology The goal of this library is to provide string-like functionality similar to C++'s STL string class. Every "smart" string worries about memory management and data organization for you, letting you better focus on your task ahead. The "smart" string type is "s_str". Every s_str function has the prefix "s_str\_" and takes in the memory address of the s_str that it will operate on as the first argument (with the exception of the *create* functions). Every s_str that is created **must** be later destroyed with a call to *destroy*. This library only supports **ASCII** characters as of now. ## API The following is a list of available functions. Refer to the greatly commented header for details. - create, create_from_char, create_from_multi_char, create_from_c_str, create_from_s_str - destroy - c_str - c_substr - assign_char, assign_multi_char, assign_c_str, assign_s_str - at - remove_at - find_char, find_c_str, find_s_str - rfind_char, rfind_c_str, rfind_s_str - capacity - reserve - size - length - empty - clear - trim - shrink_to_fit - push_back - pop_back - append_c_str, append_s_str - first_word - remove_first_word - last_word - remove_last_word - erase - insert_char, insert_c_str, insert_s_str - sepwith_char, sepwith_c_str, sepwith_s_str - replace - replace_all - swap - foreach - foreach_all - compare_c_str, compare_s_str - sort ## Example ```C s_str foo = s_str_create_from_c_str(" wow "); s_str_trim(&foo); s_str_pop_back(&foo); // Output: First print:wo. printf("First print:%s.\n", s_str_c_str(&foo)); s_str_append_c_str(&foo, "bar"); s_str_insert_char(&foo, 2, ' '); // Output: Second print:wo bar. printf("Second print:%s.\n", s_str_c_str(&foo)); s_str_remove_first_word(&foo); s_str_remove_at(&foo, 1); // Output: Third print:br. printf("Third print:%s.\n", s_str_c_str(&foo)); s_str_destroy(&foo); ```