Comment utiliser la classe de chaînes C++

How Use C String Class



Un littéral de chaîne est une séquence de caractères dans un pointeur de tableau constant terminé par le caractère nul, . Lorsqu'il est identifié par une variable, le littéral de chaîne ne peut pas vraiment réduire ou augmenter en longueur. De nombreuses opérations ne peuvent pas être effectuées sur le littéral de chaîne. Donc, il y a un besoin pour une classe de chaîne. La classe de chaînes C++ est destinée à une structure de données, une collection de caractères en séquence, qui permet aux fonctions membres et aux opérateurs d'agir sur les caractères. La classe string permet plus de manipulations sur le littéral de chaîne correspondant, que juste le littéral de chaîne. Vous devez avoir une bonne connaissance du littéral de chaîne pour comprendre cet article.

Classe et objets

Une classe est un ensemble de variables et de fonctions qui fonctionnent ensemble ; où les variables n'ont pas de valeurs affectées. Lorsque des valeurs sont affectées aux variables, la classe devient un objet. Des valeurs différentes attribuées à la même classe donnent des objets différents ; c'est-à-dire que différents objets sont la même classe avec des valeurs différentes. On dit que la création d'un objet à partir d'une classe instancie l'objet.







Le nom, chaîne, est une classe. Un objet créé à partir de la classe string a un nom choisi par le programmeur.



Une fonction qui appartient à la classe est nécessaire pour instancier un objet de la classe. En C++, cette fonction a le même nom que le nom de la classe. Les objets créés (instanciés) à partir de la classe ont des noms différents qui leur sont attribués par le programmeur.



Créer un objet à partir d'une classe signifie construire l'objet ; cela signifie également instancier.





Un programme C++ qui utilise la classe string, commence par les lignes suivantes en haut du fichier :

#comprendre
#comprendre
en utilisant l'espace de noms std;

La première ligne est pour l'entrée/sortie. La deuxième ligne permet au programme d'utiliser toutes les fonctionnalités de la classe string. La troisième ligne permet au programme d'utiliser les noms dans l'espace de noms standard.



Surcharger une fonction

Lorsque deux signatures de fonction différentes ou plus ont le même nom, ce nom est dit surchargé. Lorsqu'une fonction est appelée, le nombre et le type d'arguments déterminent quelle fonction est exécutée.

Construction

chaîne de caractères()
L'instruction suivante construit une chaîne de longueur nulle sans caractère.

chaîne strCol=chaîne de caractères();

Il commence par le nom de la classe (type d'objet), chaîne. Il est suivi du nom de la chaîne d'objet, donné par le programmeur. L'opérateur d'affectation suit ; puis le nom du constructeur avec des parenthèses vides. Ici, strCol est l'objet instancié avec toutes les données membres (propriétés) et fonctions membres (méthodes).
chaîne(chaîne)
Ceci est similaire à ce qui précède, mais prend soit un littéral de chaîne, soit un identifiant comme argument, dans le constructeur. L'énoncé suivant illustre cela :

chaîne strCol=chaîne de caractères('Je vous aime');

Construction avec la liste d'initialisation

Le code suivant illustre cela :

chaîne strCol=chaîne de caractères({'JE','','l','ou','v','Et','','et','ou','tu',' 0'});

La chaîne littérale est je t'aime. Notez le caractère nul à la fin de la liste d'initialisation.

chaîne(chaîne, n)

Cela forme une collection de chaînes, des n premiers caractères d'une autre chaîne. Le code suivant illustre cela :

carboniserp[] = 'Je vous aime';
chaîne strCol=chaîne de caractères(p, 6);
cout<<strCol<< ' ';

La sortie est I love avec les 6 premiers personnages de Je t'aime. N'oubliez pas : l'espace unique est un caractère.

chaîne(chaîne, pos, n)

Cela forme une collection de chaînes de n caractères, à partir de la position indexée de base zéro, pos, d'une autre chaîne. Le code suivant illustre cela :

carboniserp[] = 'Je vous aime';
chaîne strCol=chaîne de caractères(p, 2, 4);
cout<<strCol<< ' ';

La sortie est, l'amour.

Pour les deux cas ci-dessus, si n est supérieur à la taille de la chaîne, l'exception out_of_range est levée – voir plus loin.

chaîne(n, 'c')

Forme une collection de n caractères, où tous les caractères sont les mêmes. Envisager,

chaîne strCol=chaîne de caractères(5,'Et');
cout<<strCol<< ' ';

La sortie est, eeeee, 5 e.

Affectation d'une chaîne

Une chaîne peut être affectée comme suit, après avoir déclaré les deux chaînes :

chaîne strCol1=chaîne de caractères('Je vous aime');
chaîne strCol2;
strCol2=strCol1;
cout<<strCol2<< ' ';

La sortie est, je t'aime.

Construire avec Iterator

Un itérateur fournit une représentation générique du balayage, à travers les valeurs d'une collection. Une syntaxe pour créer une chaîne avec itérateur, est :

modèle<classe InputIterator>
chaîne_de_base(InputIterator commencer,Fin InputIterator, constAllocateur&
à=Allocateur());

Cela construit une chaîne pour la plage [begin, end) – voir les détails plus tard.

Détruire une chaîne

Pour détruire une chaîne, laissez-la simplement hors de portée.

Accès aux éléments de classe String

Un objet chaîne instancié peut être sous-scripté (indexé) comme un tableau. Le comptage d'index commence à partir de zéro.

stringName[i]

L'opération stringName[i] renvoie une référence au caractère (élément) au ieindex de la collection de personnages. Le code suivant renvoie v :

chaîne strCol=chaîne de caractères('Je vous aime');
carboniserch=strCol[4];
cout<<ch<< ' ';

stringName[i] const

L'opération stringName[i] const est exécutée à la place de stringName[i] lorsque l'objet chaîne est un objet constant. Il est utilisé dans le code suivant par exemple :

constchaîne strCol=chaîne de caractères('Je vous aime');
carboniserch=strCol[4];
cout<<ch<< ' ';

L'expression renvoie une référence constante au ieélément de l'objet chaîne. Aucun des éléments de la chaîne ne peut être modifié.

Affectation d'un caractère avec indice

Un caractère peut être affecté à un objet chaîne non constant, comme suit :

chaîne strCol=chaîne de caractères('J'appelle');
strCol[2] = 'F';
cout<<strCol<< ' ';

La sortie est je tombe. « c » a été remplacé par « f ».

stringName.at(i)

stringName.at(i) est similaire à stringName[i], mais stringName.at(i) est plus fiable. Le code suivant montre comment il doit être utilisé :

chaîne strCol=chaîne de caractères('Je vous aime');
carboniserch=strCol.à(4);
cout<<ch<< ' ';

at() est en fait une fonction membre d'une classe de chaîne.

stringName.at(i) const

stringName.at(i) const est similaire à stringName[i] const, mais stringName.at(i) const est plus fiable. stringName.at(i) const est exécuté à la place de stringName.at(i) lorsque l'objet chaîne est un objet chaîne constant. Il est utilisé par exemple dans le code suivant :

constchaîne strCol=chaîne de caractères('Je vous aime');
carboniserch=strCol.à(4);
cout<<ch<< ' ';

at() const est en fait une fonction membre d'une classe de chaîne.

Attribuer une valeur avec la fonction at()

Une valeur peut être affectée à un objet chaîne non constant, avec la fonction at(), comme suit :

chaîne strCol=chaîne de caractères('J'appelle');
strCol.à(2) = 'F';
cout<<strCol<< ' ';

La sortie est je tombe.

Problème d'abonnement

Le problème avec les sous-scripts (indexation) est que si l'index est hors plage, un résultat erroné peut être obtenu ou une erreur peut être émise au moment de l'exécution.

de face()

Cela renvoie une référence au premier élément de l'objet chaîne, sans supprimer l'élément. La sortie du code suivant est « I ».

chaîne strCol=chaîne de caractères('Je vous aime');
carboniserch=strCol.de face();
cout<<ch<< ' ';

Le caractère n'est pas supprimé de l'objet chaîne.

avant() const

Lorsque la construction de l'objet chaîne est précédée de const, l'expression front() const est exécutée à la place de front(). Il est utilisé dans le code suivant, par exemple.

constchaîne strCol=chaîne de caractères('Je vous aime');
carboniserch=strCol.de face();
cout<<ch<< ' ';

Une référence constante est renvoyée. L'élément n'est pas supprimé de l'objet chaîne. Aucun caractère ne peut être modifié pour un objet chaîne constante.

arrière()

Cela renvoie une référence au dernier élément de l'objet chaîne, sans supprimer l'élément. La sortie du code suivant est « u ».

chaîne strCol=chaîne de caractères('Je vous aime');
carboniserch=strCol.arrière();
cout<<ch<< ' ';

retour() const

Lorsque la construction de l'objet chaîne est précédée de const, l'expression back() const est exécutée à la place de back(). Il est utilisé dans le code suivant, par exemple.

constchaîne strCol=chaîne de caractères('Je vous aime');
carboniserch=strCol.arrière();
cout<<ch<< ' ';

Une référence constante est renvoyée. L'élément n'est pas supprimé de l'objet chaîne.

Capacité de chaîne

size_type capacité() const noexcept

Le nombre total de caractères que la chaîne peut contenir sans nécessiter de réallocation est renvoyé par cette fonction de membre de capacité. Un segment de code pour cela est :

chaîne strCol=chaîne de caractères();
entiersur une=strCol.capacité();
cout<<sur une<< ' ';

La sortie est de 15 sur mon ordinateur.

réserve(n)

L'espace mémoire n'est pas toujours disponible dans le magasin gratuit. Un espace supplémentaire peut être réservé à l'avance. Considérez le segment de code suivant :

chaîne strCol=chaîne de caractères('amour');
strCol.réserve(6);
cout<<strCol.capacité() << ' ';

La sortie est de 15 sur mon ordinateur.

size() const noexcept

Cela renvoie le nombre de caractères dans la chaîne. Le code suivant illustre :

chaîne strCol=chaîne de caractères('Je vous aime');
entiersur une=strCol.Taille();
cout<<sur une<< ' ';

La sortie est 10, qui n'inclut pas le caractère nul, .

length() const noexcept

-même taille().
Noter:Taille() <=capacité().

rétrécir_pour_adapter()

Peut réduire la capacité () à la taille () en provoquant une réallocation ; ce n'est pas obligatoire. Le code suivant le démontre :

chaîne strCol=chaîne de caractères('Je vous aime');
strCol.réserve(12);
strCol.rétrécir_pour_adapter();
entiers=strCol.Taille();
cout<<s<< ' ';

La sortie est 10 et non 12 ou 16. La fonction renvoie void.

redimensionner(sz), redimensionner(sz,'c')

Cela redimensionne la chaîne. Si la nouvelle taille est plus petite que l'ancienne taille, alors les éléments vers la fin sont effacés. Si la nouvelle taille est plus longue, un caractère par défaut est ajouté vers la fin. Pour ajouter un caractère particulier, utilisez la fonction resize() avec deux arguments. Le segment de code suivant illustre l'utilisation des deux fonctions :

chaîne strCol=chaîne de caractères('Je vous aime');
strCol.redimensionner(6);
cout<< 'Nouvelle taille de strCol : ' <<strCol.Taille() << ' ';
chaîne strCol1=chaîne de caractères('J'aime', 'Et');
strCol1.redimensionner(12);
cout<< 'Nouvelle taille de strCol1 : ' <<strCol1.Taille() << ' ';

La sortie est :

Nouvelle taille de strCol : 6
Nouvelle taille de strCol1 : 12
La fonction renvoie void.

clear() nonsauf

Supprime tous les éléments de la chaîne, comme l'illustre le segment de code suivant :

chaîne strCol=chaîne de caractères('Je vous aime');
strCol.dégager();
cout<<strCol.Taille() << ' ';

La sortie est 0. La fonction renvoie void.

empty() const noexcept

Cela renvoie 1 pour vrai s'il n'y a pas de caractère dans l'objet chaîne, ou 0 pour faux si l'objet chaîne n'est pas vide. Le code suivant illustre cela :

chaîne strCol1=chaîne de caractères('Je vous aime');
cout<<strCol1.vide() << ' ';
chaîne strCol2=chaîne de caractères();
cout<<strCol2.vide() << ' ';

La sortie est :

0
1

Renvoyer les itérateurs et la classe String

Un itérateur est comme un pointeur mais a plus de fonctionnalités que le pointeur.

begin() nonsauf

Renvoie un itérateur qui pointe vers le premier caractère (élément) de l'objet chaîne, comme dans le segment de code suivant :

chaîne strCol=chaîne de caractères('Je vous aime');
chaîne_de_base<carboniser> ::itérateuritérer=strCol.commencer();
cout<< *itérer<< ' ';

La sortie est « je ». Notez la manière dont la déclaration qui reçoit l'itérateur a été déclarée. L'itérateur est déréférencé dans une expression de retour pour obtenir la valeur, de la même manière qu'un pointeur est déréférencé.

begin() const noexcept;

Renvoie un itérateur qui pointe vers le premier élément de la collection d'objets de chaîne. Lorsque la construction de l'objet est précédée de const, l'expression begin() const est exécutée au lieu de begin(). Dans cette condition, l'élément correspondant dans l'objet ne peut pas être modifié. Il est utilisé dans le code suivant, par exemple.

constchaîne strCol=chaîne de caractères('Je vous aime');
chaîne_de_base<carboniser> ::const_iteratoritérer=strCol.commencer();
cout<< *itérer<< ' ';

La sortie est « je ». Notez que const_iterator a été utilisé cette fois, au lieu de simplement iterator, pour recevoir l'itérateur renvoyé.

fin() nonsauf

Renvoie un itérateur qui pointe immédiatement au-delà du dernier élément de l'objet chaîne. Considérez le segment de code suivant :

chaîne strCol=chaîne de caractères('Je vous aime');
chaîne_de_base<carboniser> ::itérateuritérer=strCol.finir();
cout<< *itérer<< ' ';

La sortie est nulle, ce qui n'est rien, car il n'y a pas d'élément concret au-delà du dernier élément.

end() const noexcept

Renvoie un itérateur qui pointe immédiatement au-delà du dernier élément de l'objet chaîne. Lorsque la construction de l'objet chaîne est précédée de const, l'expression end() const est exécutée au lieu de end(). Considérez le segment de code suivant :

constchaîne strCol=chaîne de caractères('Je vous aime');
chaîne_de_base<carboniser> ::const_iteratoritérer=strCol.finir();
cout<< *itérer<< ' ';

La sortie est nulle. Notez que const_iterator a été utilisé cette fois, au lieu de simplement iterator, pour recevoir l'itérateur renvoyé.

Itération inverse

Il est possible d'avoir un itérateur qui itère de la fin réelle juste avant le premier élément :

rbegin() nonsauf

Renvoie un itérateur qui pointe vers le dernier élément de l'objet instancié de chaîne, comme dans le segment de code suivant :

chaîne strCol=chaîne de caractères('Je vous aime');
chaîne_de_base<carboniser> ::inverse_itérateuritérer=strCol.rcommencer();
cout<< *itérer<< ' ';

La sortie est « u ». Notez la manière dont la déclaration qui reçoit l'itérateur inverse a été déclarée. L'itérateur est déréférencé dans une expression de retour pour obtenir la valeur, de la même manière qu'un pointeur est déréférencé.

rbegin() const noexcept;

Renvoie un itérateur qui pointe vers le dernier élément de l'objet chaîne. Lorsque la construction de l'objet est précédée de const, l'expression rbegin() const est exécutée à la place de rbegin(). Dans cette condition, l'élément correspondant dans l'objet ne peut pas être modifié. La fonctionnalité est utilisée dans le code suivant, par exemple.

constchaîne strCol=chaîne de caractères('Je vous aime');
chaîne_de_base<carboniser> ::const_reverse_iteratoritérer=strCol.rcommencer();
cout<< *itérer<< ' ';

La sortie est « u ». Notez que const_reverse_iterator a été utilisé cette fois, au lieu de simplement reverse_iterator, pour recevoir l'itérateur renvoyé.

rend() noexcept

Renvoie un itérateur qui pointe juste avant le premier élément de l'objet chaîne. Considérez le segment de code suivant :

chaîne strCol=chaîne de caractères('Je vous aime');
chaîne_de_base<carboniser> ::inverse_itérateuritérer=strCol.rend();
cout<< *itérer<< ' ';

La sortie est nulle, ce qui n'est rien, car il n'y a pas d'élément concret juste avant le premier élément.

rend() const noexcept

Renvoie un itérateur qui pointe juste avant le premier élément de l'objet chaîne. Lorsque la construction de l'objet est précédée de const, l'expression rend() const est exécutée à la place de rend(). Considérez le segment de code suivant :

constchaîne strCol=chaîne de caractères('Je vous aime');
chaîne_de_base<carboniser> ::const_reverse_iteratoritérer=strCol.rend();
cout<< *itérer<< ' ';

La sortie est nulle. Notez que const_reverse_iterator a été utilisé cette fois, au lieu de simplement reverse_iterator, pour recevoir l'itérateur renvoyé.

Modificateurs de chaîne

Un modificateur qui modifie l'objet chaîne peut également prendre ou retourner un itérateur.

Ajout

chaîne_de_base&opérateur+ =(constchaîne_de_base&p)

Ajoute l'objet chaîne de droite à l'objet chaîne de gauche. Exemple:

chaîne strCol1=chaîne de caractères('J'aime');
chaîne strCol2=chaîne de caractères(' tu');
strCol1+ =strCol2;
cout<<strCol1<< ' ';

La sortie est je t'aime. N'oubliez pas que strCol1 += strCol2 est identique à strCol1 = strCol1+strCol2.

basic_string& operator+=(const charT* s)

Ajoute un littéral de chaîne à une collection d'objets de chaîne. Exemple:

chaîne strCol=chaîne de caractères('J'aime');
strCol+ = ' tu';
cout<<strCol<< ' ';

Sortie : Je t'aime.

chaîne_de_base& opérateur+=(charT c)

Ajoute un seul caractère à une chaîne d'objet. Exemple:

chaîne strCol=chaîne de caractères('Je t'aime');
strCol+ = 'tu';
cout<<strCol<< ' ';

Sortie : Je t'aime.

basic_string& operator+=(initializer_list)

Ajoute une liste d'initialiseurs. Exemple:

chaîne strCol=chaîne de caractères('J'aime');
strCol+ = {'','et','ou','tu',' 0'};
cout<<strCol<< ' ';

Sortie : Je t'aime. Il est toujours bon d'ajouter le nul, à la fin d'une liste d'initialisation de caractères.

basic_string& append(const basic_string& str)

Ajoute l'objet chaîne d'argument à l'objet chaîne principal. Exemple:

chaîne strCol1=chaîne de caractères('J'aime');
chaîne strCol2=chaîne de caractères(' tu');
strCol1.ajouter(strCol2);
cout<<strCol1<< ' ';

Sortie : Je t'aime.

basic_string& append(const charT* s)

Ajoute un argument littéral de chaîne à la chaîne principale. Exemple

chaîne strCol=chaîne de caractères('J'aime');
strCol=strCol.ajouter(' tu');
cout<<strCol<< ' ';

Sortie : Je t'aime.

basic_string& append(initializer_list)

Ajoute la liste d'initialisation, qui est un argument, à la chaîne principale. Exemple:

chaîne strCol=chaîne de caractères('J'aime');
strCol=strCol.ajouter({'','et','ou','tu',' 0'});
cout<<strCol<< ' ';

Sortie : Je t'aime. Il est toujours bon d'ajouter le caractère nul, à la fin d'une liste d'initialisation.

basic_string& append(size_type n, charT c)

Ajoute n du même caractère. Exemple:

chaîne strCol=chaîne de caractères('languette');
strCol=strCol.ajouter(2, 'ou');
cout<<strCol<< ' ';

Sortie : tabou.

basic_string& append(const charT* s, size_type n)

Ajoute les n premiers éléments d'un littéral de chaîne à l'objet chaîne principal. Exemple:

chaîne strCol=chaîne de caractères('J'aime');
strCol=strCol.ajouter('tu es tellement', 4);
cout<<strCol<< ' ';

Le résultat est : je t'aime. Si n est supérieur à la longueur du littéral, une exception length_error est levée.

basic_string& append(const basic_string& str, size_type pos, size_type n = npos)

Ajoute n caractères de l'index, pos à la chaîne principale. Exemple:

chaîne strCol=chaîne de caractères('J'aime');
strCol=strCol.ajouter('est-ce que tu en as', 2, 4);
cout<<strCol<< ' ';

Sortie : Je t'aime. Une exception serait également levée ici, voir plus loin.

Attribution

chaîne_de_base&attribuer(constchaîne_de_base&p)

Affecte l'objet chaîne d'argument à la chaîne principale, remplaçant tout contenu qui s'y trouvait.

chaîne strCol1=chaîne de caractères('Je vous aime');
chaîne strCol2=chaîne de caractères('Elle a besoin de moi');
strCol1=strCol1.attribuer(strCol2);
cout<<strCol1<< ' ';

Sortie : Elle a besoin de moi.

chaîne_de_base&attribuer(constgraphique*s)

Attribue un argument littéral de chaîne à la chaîne principale, remplaçant tout contenu qui s'y trouvait.

chaîne strCol=chaîne de caractères('Je vous aime');
strCol=strCol.attribuer('Elle a besoin de moi');
cout<<strCol<< ' ';

Sortie : Elle a besoin de moi.

chaîne_de_base&attribuer(liste_initialiser<graphique>)

Attribue un argument de liste d'initialisation à la chaîne principale,remplaçant tout contenu qui s'y trouvait.
[cc langue='c'échappé='vrai'largeur='780']
chaîne strCol=chaîne de caractères('Je vous aime');
strCol=strCol.attribuer({'S','h','Et','','n','Et','Et','ré','s','','m','Et',' 0'});
cout<<strCol<< ' ';

Sortie : Elle a besoin de moi. Il est bon de toujours ajouter le nul, à la fin de la liste de caractères, pour former un littéral de chaîne.

chaîne_de_base&attribuer(constgraphique*s,size_type n)

Affecte les n premiers caractères d'un argument littéral de chaîne à la chaîne principale, remplaçant tout contenu qui s'y trouvait.

chaîne strCol=chaîne de caractères('Je vous aime');
strCol=strCol.attribuer('Elle a besoin de moi', 9);
cout<<strCol<< ' ';

Sortie : Elle a besoin.

chaîne_de_base&attribuer(size_type n,graphique c)

Affecte un argument de n des mêmes caractères à la chaîne principale, remplaçant tout contenu qui s'y trouvait.

chaîne strCol=chaîne de caractères('Je vous aime');
strCol=strCol.attribuer(4, 'Et');
cout<<strCol<< ' ';

Sortie : eeee

chaîne_de_base&attribuer(constchaîne_de_base&p,size_type pos,
size_type n=npos)

Affecte n caractères d'un argument d'objet chaîne, en commençant par pos, à la chaîne principale, remplaçant tout contenu qui s'y trouvait.

chaîne strCol=chaîne de caractères('Je vous aime');
strCol=strCol.attribuer('Elle a besoin de moi', 4, 5);
cout<<strCol<< ' ';

Sortie : besoins. Jetterait une exception - voir plus tard.

Insertion

chaîne_de_base&insérer(size_type pos, constchaîne_de_base&p)

Insère l'argument de l'objet chaîne dans la chaîne principale, à l'index, pos.

chaîne strCol1=chaîne de caractères('Je vous aime');
chaîne strCol2=chaîne de caractères('haine et');
strCol1=strCol1.insérer(2,strCol2);
cout<<strCol1<< ' ';

Sortie : Je vous déteste et vous aime. Jetterait une exception - voir plus tard.

chaîne_de_base&insérer(size_type pos1, constchaîne_de_base&
p,size_type pos2,size_type n=npos)

Insère une longueur de n caractères de pos2 de l'argument de l'objet chaîne à la chaîne principale, à l'index, pos1.

chaîne strCol1=chaîne de caractères('Je vous aime');
chaîne strCol2=chaîne de caractères('haine, envie et besoin');
strCol1=strCol1.insérer(2,strCol2, 6, 9);
cout<<strCol1<< ' ';

Sortie : Je te veux et je t'aime.

iterator insert(const_iterator p, charT c)

Insère un caractère particulier, qui est un argument, dans la position pointée par l'itérateur. Renvoie un itérateur pour la position du caractère nouvellement inséré.

chaîne strCol=chaîne de caractères('Je vous aime');
chaîne_de_base<carboniser> ::itérateuritérer=strCol.commencer();
++itérer; ++itérer; ++itérer; ++itérer; ++itérer; ++itérer;
chaîne_de_base<carboniser> ::itérateurréseau=strCol.insérer(itérer, 'ré');
cout<< *réseau<< ' ';
cout<<strCol<< ' ';

La sortie est :

'ré'

je t'ai aimé

iterator insert(const_iterator p, size_type n, charT c)

Insère n du même caractère de l'argument, dans la position pointée par l'itérateur. Renvoie un itérateur pour la position du début des mêmes caractères nouvellement insérés.

chaîne strCol=chaîne de caractères('Tab dans le pays.');
chaîne_de_base<carboniser> ::itérateuritérer=strCol.commencer();
++itérer; ++itérer; ++itérer;
chaîne_de_base<carboniser> ::itérateurréseau=strCol.insérer(itérer, 2, 'ou');
cout<< *réseau<< ' ';
cout<<strCol<< ' ';

La sortie est :

'ou'

Tabou dans le pays.

chaîne_de_base&insérer(size_type pos, constgraphique*s)

Insère un littéral de chaîne d'argument à l'index, pos dans la chaîne principale.

chaîne strCol=chaîne de caractères('Tab dans le pays.');
strCol=strCol.insérer(3, 'oh');
cout<<strCol<< ' ';

Sortie : Tabou dans la terre.

chaîne_de_base&insérer(size_type pos, constgraphique*s,size_type n)

Insère les n premiers caractères du littéral de chaîne d'argument, à l'index, pos dans la chaîne principale.

chaîne strCol=chaîne de caractères('Tab dans le pays.');
strCol=strCol.insérer(3, 'oooo', 2);
cout<<strCol<< ' ';

Sortie : Tabou dans la terre.

Remplacement

chaîne_de_base&remplacer(size_type pos1,size_type n1, constchaîne_de_base&p))

Remplace n1 caractères dans l'objet chaîne principal de l'index, pos1, par l'objet chaîne d'argument.

chaîne strCol1=chaîne de caractères('Je vous aime');
chaîne strCol2=chaîne de caractères('vous déteste et');
strCol1=strCol1.remplacer(2, 4,strCol2);
cout<<strCol1<< ' ';

Sortie : Je vous déteste vous et vous. Jetterait une exception - voir plus tard.

chaîne_de_base&remplacer(size_type pos1,size_type n1, constchaîne_de_base&
p,size_type pos2,size_type n2=npos)

Remplace n1 caractères dans l'objet chaîne principal de l'index, pos1, par n2 caractères de l'objet chaîne d'arguments de l'index, pos2.

chaîne strCol1=chaîne de caractères('Je vous aime');
chaîne strCol2=chaîne de caractères('nous le haïssons lui et elle');
strCol1=strCol1.remplacer(2, 4,strCol2, 3, 12);
cout<<strCol1<< ' ';

Sortie : Je le déteste et vous.

chaîne_de_base&remplacer(size_type pos1,size_type n1, constgraphique*s,
size_type n2)

Remplace n1 caractères dans l'objet chaîne principal de l'index, pos1, par les n2 premiers caractères de l'argument de chaîne littérale.

chaîne strCol1=chaîne de caractères('Je vous aime');
strCol1=strCol1.remplacer(2, 4, 'déteste lui et elle', 12);
cout<<strCol1<< ' ';

Sortie : Je le déteste et vous.

basic_string& replace(size_type pos, size_type n, const charT* s)

Remplace n caractères dans l'objet chaîne principal de l'index, pos, par l'argument chaîne littérale.

chaîne strCol1=chaîne de caractères('Je vous aime');
strCol1=strCol1.remplacer(2, 4, 'le déteste et');
cout<<strCol1<< ' ';

Sortie : Je le déteste et vous.

chaîne_de_base&remplacer(size_type pos1,size_type n1,size_type n2,graphique c)

Remplace n1 caractères dans l'objet chaîne principale de l'index, pos1, par n2 du même caractère de l'argument.

chaîne strCol1=chaîne de caractères(« Une mauvaise tablette là-bas. »);
strCol1=strCol1.remplacer(9, 3, 2, 'ou');
cout<<strCol1<< ' ';

Sortie : Un mauvais tabou là-bas..

itérateur effacer (const_iterator p)

Supprime un caractère à la position pointée par l'itérateur ; renvoie ensuite la position de l'itérateur, qui est maintenant occupée par le caractère qui était à côté de ce caractère (ou end()). Le code suivant illustre cela :

chaîne strCol=chaîne de caractères('a B c d');
chaîne_de_base<carboniser> ::itérateuritérer=strCol.commencer();
++itérer; ++itérer;
strCol.effacer(itérer);
cout<<strCol[0] << '' <<strCol[1] << '
'
<<strCol[2]<< ' ';

La sortie : a b d

chaîne_de_base&effacer(size_type pos= 0,size_type n=npos)

Supprime n caractères de l'index, pos.

chaîne strCol=chaîne de caractères('a B c d');
strCol.effacer(1, 2);
cout<<strCol[0] << '' <<strCol[1] << ' ';

Sortie : un d

void push_back(charT c)

Pour ajouter un seul caractère à la fin de la chaîne :

chaîne strCol=chaîne de caractères('a B c d');
strCol.repousser('5');
cout<<strCol<< ' ';

Sortie : abcd5

annuler pop_back()

Supprime le dernier caractère sans le renvoyer. La taille de la chaîne est réduite de 1.

chaîne strCol=chaîne de caractères('abcde');
strCol.pop_back();
cout<<strCol<< ' ';

Sortie : abcd

void swap(basic_string& s)

Les littéraux de deux objets chaîne peuvent être échangés.

chaîne strCol1=chaîne de caractères(<aide='post-69618-__DdeLink__781_3724385525'>à>'abcde');
chaîne strCol2=chaîne de caractères('1234567');
strCol1.échanger(strCol2);
cout<<strCol1<< ' ';
cout<<strCol2<< ' ';

La sortie est :

'1234567'
'abcde'

Opérations de chaîne

const charT* c_str() const noexcept

Renvoie un pointeur sur le premier élément de la chaîne. Le pointeur peut être incrémenté.

constchaîne strCol=chaîne de caractères('abcde');
const carboniser*p=strCol.c_str();
cout<< *p<< ' ';
++p;
cout<< *p<< ' ';

La sortie est :

à
b

En raison du deuxième const dans l'en-tête, le programme ne peut modifier aucun caractère de la chaîne. La construction est précédée de const.

const charT* data() const noexcept

Renvoie un pointeur sur le premier élément de la chaîne. Le pointeur peut être incrémenté.

constchaîne strCol=chaîne de caractères('abcde');
const carboniser*p=strCol.Les données();
cout<< *p<< ' ';
++p;
cout<< *p<< ' ';

La sortie est :

à
b

En raison du deuxième const dans l'en-tête, le programme ne peut modifier aucun caractère de la chaîne. La construction est précédée de const.

basic_string substr(size_type pos = 0, size_type n = npos) const

Renvoie un objet chaîne de n caractères pour la sous-chaîne commençant à l'index, pos.

constchaîne strCol=chaîne de caractères('abcdefghij');
constchaîne retStr=strCol.substr(2, 4);
cout<<retStr<< ' ';

Sortie : cdef

Find() Fonctions membres

size_type find(const basic_string& str, size_type pos = 0) const noexcept

Recherche un objet de sous-chaîne commençant à partir de l'index, pos. S'il est trouvé, renvoie le début de la sous-chaîne dans la chaîne principale.

chaîne strCol=chaîne de caractères('Nous sommes le monde!');
chaîne strCol1=chaîne de caractères('les');
entiersur une=strCol.trouve(strCol1, 2);
cout<<sur une<< ' ';

Sortir:

indice : 7
Renvoie -1, lorsqu'il n'est pas trouvé.

size_type find(const charT* s, size_type pos = 0) const

Recherche un littéral de sous-chaîne commençant par l'index, pos. S'il est trouvé, renvoie le début de la sous-chaîne dans la chaîne principale.

chaîne strCol=chaîne de caractères('Nous sommes le monde!');
entiersur une=strCol.trouve('sommes', 0);
cout<<sur une<< ' ';

Puisque pos = 0 est la valeur par défaut, 0 dans l'argument aurait pu être omis.

Sortie : 3

Renvoie -1, lorsqu'il n'est pas trouvé.

size_type find (const charT* s, size_type pos, size_type n) const

Recherche les n premiers caractères d'un littéral de sous-chaîne commençant à l'index, pos. S'il est trouvé, renvoie le début de la sous-chaîne dans la chaîne principale.

chaîne strCol=chaîne de caractères('Le plus grand garçon');
entiersur une=strCol.trouve('plus gros', 1, 3);
cout<<sur une<< ' ';

Sortie : 4

Renvoie -1, lorsqu'il n'est pas trouvé.

size_type find(charT c, size_type pos = 0) const

Recherche le caractère, c à partir de l'index, pos. S'il est trouvé, renvoie le début de la sous-chaîne dans la chaîne principale. S'il n'est pas trouvé, renvoie -1.

chaîne strCol=chaîne de caractères('Nous sommes le monde!');
entiersur une=strCol.trouve('Avec');
cout<<sur une<< ' ';

Sortie : -1

Les fonctions membres reverse find() suivantes existent :

size_type rechercher(constchaîne_de_base&p,size_type pos=npos) constnonsauf;
size_type rechercher(constgraphique*s,size_type pos=npos) const;
size_type rechercher(constgraphique*s,size_type pos,size_type n) const;
size_type rechercher(graphique c,size_type pos=npos) const;

Fonctions membres de comparaison

int compare(const basic_string& str) const noexcept

Compare l'objet chaîne d'argument avec l'objet chaîne principal. Si la chaîne principale apparaît avant l'argument (dans le dictionnaire), elle renvoie un nombre positif. S'il se produit après la chaîne principale, il renvoie un nombre négatif. Si les deux chaînes sont identiques, il renvoie zéro.

chaîne strCol1=chaîne de caractères('foule');
chaîne strCol2=chaîne de caractères('personnes');
entiersur une=strCol1.comparer(strCol2);
cout<<sur une<< ' ';

Sortie : -13

int compare(const charT* s) const

Identique à ci-dessus, mais l'argument est un littéral de chaîne.

chaîne strCol1=chaîne de caractères('personnes');
entiersur une=strCol1.comparer('personnes');
cout<<sur une<< ' ';

Sortie : 0

Opérateurs de chaîne

Ces opérateurs sont applicables aux objets chaîne et pas nécessairement aux littéraux chaîne.

+

Concatène deux objets chaîne et renvoie la concaténation.

chaîne strCol1=chaîne de caractères('danser dessus');
chaîne strCol2=chaîne de caractères(' la lune');
chaîne strCol=strCol1+strCol2;
cout<<strCol<< ' ';

Sortie : danse sur la lune.

==

Renvoie 1 pour true, si les objets chaîne sont identiques ; et zéro pour faux, s'ils ne le sont pas.

chaîne strCol1=chaîne de caractères('danser dessus');
chaîne strCol2=chaîne de caractères(' sur la Lune');
bool bl=strCol1==strCol2;
cout<<bl<< ' ';

Sortie : 0

! =

Renvoie 1 si les objets chaîne ne sont pas les mêmes et zéro s'ils le sont.

chaîne strCol1=chaîne de caractères('danser dessus');
chaîne strCol2=chaîne de caractères(' sur la Lune');
bool bl=strCol1! =strCol2;
cout<<bl<< ' ';

Sortie : 1

<

Renvoie 1, si l'opérande gauche est inférieur à l'opérande droit selon le dictionnaire, ou zéro s'il ne l'est pas.

chaîne strCol1=chaîne de caractères('danser dessus');
chaîne strCol2=chaîne de caractères(' sur la Lune');
bool bl=strCol1<strCol2;
cout<<bl<< ' ';

Sortie : 0

Pour les caractères ordinaires en C++, dans l'ordre croissant, les nombres précèdent les lettres majuscules, qui précèdent les lettres minuscules. Le caractère espace vient avant zéro et tous.

Types de caractères de chaîne principale C++

carboniser

Le type char est le type C++ d'origine et stocke généralement un caractère sur 8 bits.

char16_t

Cela stocke un caractère en 16 bits.

char32_t

Cela stocke un caractère en 32 bits.

wchar_t

char16_t et char32_t sont des caractères larges. wchar_t est un caractère large qui est propriétaire et défini par l'implémentation.

Ces types sont appelés traits. Cependant, le C++ les appelle techniquement des spécialisations de traits. Cet article s'est concentré sur le type char. L'approche des autres types est légèrement différente – voir plus loin.

Autres fonctions membres d'opération de chaîne

Les signatures des autres fonctions d'opération de chaîne sont :

size_type find_first_of(constchaîne_de_base&p,size_type pos= 0) constnonsauf;
size_type find_first_of(constgraphique*s,size_type pos,size_type n) const;
size_type find_first_of(constgraphique*s,size_type pos= 0) const;
size_type find_first_of(graphique c,size_type pos= 0) const;
size_type find_last_of(constchaîne_de_base&p,size_type pos=npos) constnonsauf;
size_type find_last_of(constgraphique*s,size_type pos,size_type n) const;
size_type find_last_of(constgraphique*s,size_type pos=npos) const;
size_type find_last_of(graphique c,size_type pos=npos) const;
size_type find_first_not_of(constchaîne_de_base&p,size_type pos= 0) constnonsauf;
size_type find_first_not_of(constgraphique*s,size_type pos,size_type n) const;
size_type find_first_not_of(constgraphique*s,size_type pos= 0) const;
size_type find_first_not_of(graphique c,size_type pos= 0) const;
size_type find_last_not_of(constchaîne_de_base&p,size_type pos=npos) constnonsauf;
size_type find_last_not_of(constgraphique*s,size_type pos,size_type n) const;
size_type find_last_not_of(constgraphique*s,size_type pos=npos) const;
size_type find_last_not_of(graphique c,size_type pos=npos) const;

Conclusion

C++ a des littéraux de chaîne et des objets de chaîne. L'objet chaîne a une collection de caractères en séquence, similaire à un tableau de caractères en séquence. La différence entre la collection de chaînes et un tableau est que la collection de chaînes peut augmenter en longueur ou diminuer en longueur. Un objet chaîne est instancié (construit) à partir d'une classe chaîne. Un objet chaîne est une structure de données avec des fonctions membres. Les fonctions membres peuvent être classées sous les en-têtes de construction d'objet, d'accès aux éléments, de capacité de chaîne, de fonctions membres de chaîne avec des arguments d'itérateur et des types de retour, et des modificateurs de chaîne. L'égalité des chaînes et les opérateurs relationnels existent également.