Une bibliothèque fournissant des fonctions de chaîne et des utilitaires dans C. Avant de l'utiliser, faites cd c-string/ && ./setup.sh pour installer des bibliothèques.
#include <c-string/lib.h>
#include <stdio.h>
#include <assert.h>
#include <string.h>
int main ( void ) {
String str = String_from ( "Hello, world!" );
printf ( "%sn" , str ); // Works, since it is NULL terminated.
String_append ( & str , "nfoo bar" );
printf ( "%sn" , str );
String str2 = String_clone ( str );
assert ( String_equal ( str , str2 )); // Identical
String_append ( & str2 , "nbaz" );
assert (! String_equal ( str , str2 )); // Different, since one of them changed.
String str3 = String_slice ( str2 , 0 , 5 );
assert (! strcmp ( str3 , "Hello" )); // You can use strcmp because it is NULL terminated.
// Always be sure to cleanup(aka. free) the strings to prevent memory leaks.
String_cleanup ( str );
String_cleanup ( str2 );
String_cleanup ( str3 );
} Un typedef de char * . Utilisé pour représenter un vecteur de caractères. Est principalement utilisé pour représenter le tampon sous-jacent de la chaîne, mais peut également être utilisé comme StringBuffer en Java, std::stringstream dans C ++ ou StringSink dans AssemblyScript. Fabriqué avec C-vector.
Un typedef de char const * . Utilisé pour représenter une chaîne. Il est terminé NULL pour rester compatible avec la bibliothèque C standrd.
Un vecteur de chaînes, juste CVECTOR(String) , mafe avec vecteur c. Utilisé par String_split et String_split_by_char .
Une structure décrivant une chaîne de taille fixe immuable.
int len : la longueur.char const *str : le pointeur le contenu. Avec les fonctions déclarées ci-dessous, il existe d'autres fonctions qui fonctionnent sur StringBuffer qui sont générées à partir de la macro cvector_with_name à partir de V-vector.
Crée un StringBuffer à partir d'un littéral de chaîne sans allouer sur le tas, valide uniquement à l'intérieur de la portée qu'elle est créée.
char const * : AC String littéral.Pousse un certain nombre d'octets un par un dans le tampon.
StringBuffer *sb : le tampon où les octets seront poussés.char *bytes : le pointeur vers les octets qui seront poussés.int n : puis nombre d'octets qui seront poussés BR.CVECTOR_STATUS ): Lisez le mode silencieux du vecteur c. Pousse une chaîne terminée NULL dans le tampon.
StringBuffer *sb : le tampon où la chaîne sera poussée.char *str : la chaîne qui sera poussée.CVECTOR_STATUS ): Lisez le mode silencieux du vecteur c.Crée une nouvelle chaîne vide.
String ): la chaîne vide nouvellement créée.Crée une chaîne à partir d'un littéral de chaîne sans allouer sur le tas, valide uniquement à l'intérieur de la portée qu'elle est créée.
char const * : AC String littéral.Crée une nouvelle chaîne à partir d'un morceau d'octets.
char *bytes : le pointeur vers les octets qui seront utilisés comme contenu.int n : le nombre d'octets qui seront utilisés.String ): la nouvelle chaîne avec le morceau si les octets comme contenu. Crée une nouvelle chaîne à partir d'une chaîne terminée NULL simple.
char *str : la chaîne terminée NULL .String ): la nouvelle chaîne avec la chaîne terminée NULL en tant que contenu.String str : La chaîne.int ): la longueur de la chaîne. Clones une chaîne. Fonctionne comme la façon dont strdup reproduit une chaîne terminée NULL .
String str : La chaîne qui sera clonée.String ): une nouvelle chaîne identique.Concaténe le contenu de deux cordes en une seule.
String str1 : la première chaîne.String str2 : la deuxième chaîne.String ): une nouvelle chaîne avec le contenu concaténé. Tranche un segment d'une chaîne. L'indexation vers l'arrière négative est autorisée (IE Index -1 fait référence au dernier élément).
String str : La chaîne à partir de laquelle le segment sera tranché.int fi : l'indice de démarrage.int li : l'indice final.String ): le segment tranché. Si fi est plus petit que li ou fi / li sont plus petits que 0 même après qu'ils soient traduits en indices psitiques ou s'ils sont plus grands ou égaux que la longueur de la chaîne, NULL sera retourné.Hache une chaîne en utilisant la fonction de hachage non cryptographique Murmurhash-2.
String str : La chaîne qui sera hachée.uint32_t ): le hachage de str . Ajoute une chaîne terminée NULL simple à la fin.
String *str : Le pointeur vers la variable de chaîne. Il réaffectera probablement la chaîne à un emplacement de mémoire plus grand, il doit donc également réaffecter la variable.char *bstr : la chaîne terminée NULL qui sera annexée.CVECTOR_STATUS ): Lisez le mode silencieux du vecteur c. Sur le mode verbeux, il renverra 1 si la poussée du caractère échoue, sinon 1 .Compare deux chaînes.
String str1 ,String str2 : les chaînes qui seront comparées.bool ): true si les deux chaînes sont égales en longueur et en contenu, sinon false .Libère la chaîne de la mémoire.
String str : La chaîne qui sera libérée.void )Crée et renvoie la version fixe d'une chaîne
String str : La source.FixedString ): la chaîne fixe avec le contenu du premier argument.Fruit une chaîne par une séquence de caractères.
String str : La chaîne qui sera divisée.char const *seq : la séquence de caractères.Vector_String ): les nouvelles chaînes résultant de la scission. Comme String_split , mais se divise par un caractère au lieu d'une séquence.
String str : La chaîne qui sera divisée.char c : Le personnage.Vector_String ): les nouvelles chaînes résultant de la scission. Supprime le principal t , , n et