Tout ce que vous devez savoir sur les chaînes en C ++

Cet article vous fournira une connaissance détaillée et complète des chaînes en C ++ et fournira également des exemples de diverses opérations.

Le terme signifie une séquence ordonnée de caractères. Une séquence de caractères peut être représentée à l'aide d'un objet d'une classe en C ++. La classe qui fournit une définition pour ce faire est appelée une classe String. La classe String stocke les caractères sous la forme d'une séquence d'octets avec la fonctionnalité d'autoriser l'accès au caractère à un octet. En C ++, les délimiteurs englobants sont des guillemets doubles. Dans cet article 'Chaînes en C ++', je traiterai des sujets suivants:



Différence entre les classes de chaînes et les tableaux de caractères

Classe de chaîne Tableau de caractères
La classe String est une classe qui définit des objets pouvant être représentés sous forme de flux de caractèresLe tableau de caractères est simplement un tableau de caractères.
Dans le cas des chaînes, la mémoire est allouée dynamiquement, donc plus de mémoire peut être allouée au moment de l'exécution sur demandeLa taille du tableau de caractères doit être allouée de manière statique, donc plus de mémoire ne peut pas être allouée au moment de l'exécution si nécessaire
La classe String définit un certain nombre de fonctionnalités qui permettent des opérations multiples sur les chaînes.Les tableaux de caractères n'offrent pas beaucoup de fonctions intégrées pour manipuler les chaînes
Les chaînes sont plus lentes par rapport à l'implémentation que le tableau de caractères.L'implémentation d'un tableau de caractères est Plus vite.

Déclarer et initialiser une chaîne en C ++

strings-in-c++L'initialisation de la chaîne en C ++ est assez simple !. Nous pouvons utiliser l'une des méthodes suivantes.



utilisation de l'espace de noms chaîne std std_string

ou

instance d'une classe java
std :: string std_string
#include using namespace std int main () {char ch [12] = {'H', 'e', ​​'l', 'l', 'o', '', 'b', 'y', '' , 'c', 'h', ''} string st = 'Hello by st' std :: string std_st = 'Hello by std_st' cout<< ch << endl cout << st << endl cout << std_st << endl return 0 }

Production:



Bonjour par ch Bonjour par st Bonjour par std_st

Dans cet exemple, nous avons montré à la fois le tableau de caractères (ch) et la chaîne clméthodes d'initialisation ass (st et std_st). Tout d'abord, nous avons utilisé la méthode de tableau de caractères en définissant un tableau de caractères ch [12] qui contient 12 éléments et se termine par un caractère nul. Dans la deuxième partie, nous avons utilisé une méthode de classe de chaîne.

Opérations sur les chaînes en C ++

L'avantage d'utiliser la classe de chaînes est qu'il existe plusieurs fonctions intégrées en C ++ pour les manipuler. Cela rend la programmation simple et efficace. Prenons certaines fonctions importantes de manipulation de chaînes et comprenons-les en regardant quelques exemples.

Taille de la chaîne: Les méthodes size () et length () peuvent être utilisées pour renvoyer la taille de l'objet.



cout<< st.length() <

Production:

11 11

Concaténation de chaînes: Nous pouvons concaténer deux ou plusieurs chaînes simplement en utilisant l'opérateur + entre elles

string new_string = st + 'et' + std_st cout<< new_string <

Production:

Bonjour par st et Bonjour par std_st

Ajout de chaînes: La fonction membre de classe .append (string) peut être utilisée pour concaténer et ajouter une chaîne à un emplacement de caractère spécifique dans la chaîne. Si un programmeur met str.append (str1, p, n), cela signifie que n nombre de caractères de la position p dans la chaîne str1 sera ajouté à la fin de str.

string str = 'J'aime apprendre' string str1 = 'Python, C ++ ou C' str.append (str1, 8, 3) cout<< str << endl

Production:

J'aime apprendre le C ++

Recherche de chaînes: Nous pouvons utiliser la fonction membre find () pour trouver la première occurrence d'une chaîne dans une autre. find () recherchera l'aiguille de la chaîne à l'intérieur de la botte de foin à partir de la position pos et retournera la position de la première occurrence de l'aiguille. La fonction rfind () fonctionne de la même manière, sauf qu'elle renvoie la dernière occurrence de la chaîne passée.

string haystack = 'Bonjour le monde!' aiguille de chaîne = 'o' cout<< haystack.find(needle)<

Production:

4 4 7 4294967295

La première commande cout affichera simplement «4» qui est l'index de la première occurrence de «o» dans la chaîne de la botte de foin. Si nous voulons le «o» dans «World», nous devons modifier «pos» pour qu'il pointe au-delà de la première occurrence. haystack.find (aiguille, 4) renverrait à nouveau 4, tandis que haystack.find (aiguille, 5) donnerait 7. Si la sous-chaîne n’est pas trouvée, find () renvoie std :: string :: npos.

Npos est une valeur spéciale égale à la valeur maximale représentable par le type size_type. Il s'agit ici de 4294967295. Généralement, il est utilisé soit comme indicateur de fin de chaîne par les fonctions qui attendent un index de chaîne, soit comme indicateur d'erreur par les fonctions qui renvoient un index de chaîne.

java comment terminer le programme

Ce code simple recherche une chaîne pour toutes les occurrences de «C ++» dans str2 et imprime leurs positions:

string str2 = 'C ++ est un langage de programmation orienté objet et comprend des classes, l'héritage, le polymorphisme, l'abstraction de données et l'encapsulation.C ++ permet la gestion des exceptions et la surcharge de fonctions qui ne sont pas possibles en C.C ++ est un langage puissant, efficace et rapide. ' for (string :: size_type i = 0, tfind (tfind = wikistr.find ('C ++', i))! = string :: npos i = tfind + 1) {std :: cout<< 'Found occurrence of 'C++' at position ' << tfind << std::endl }

Production:

Occurrence de 'C ++' trouvée à la position 0 Occurrence de 'C ++' trouvée à la position 132 Occurrence de 'C ++' trouvée à la position 217
#include en utilisant l'espace de noms de base de la classe std {public: void fun_1 () {cout<< 'base class function 1n' } virtual void fun_2() { cout << 'base class function 2n' } virtual void fun_3() { cout << 'base class function 3n' } virtual void fun_4() { cout << 'base class function 4n' } } class derived : public base { public: void fun_1() { cout << 'derived class function 1n' } void fun_2() { cout << 'derived class function 2n' } void fun_4(int x) { cout fun_2 () // liaison tardive (RTP) ptr-> fun_3 () // liaison tardive (RTP) ptr-> fun_4 () // liaison précoce mais cet appel de fonction est // illégal (produit une erreur) car le pointeur // est du type et de la fonction de base est de // classe dérivée // p-> fun_4 (5)}

Production:

fonction de classe de base 1 fonction de classe dérivée 2 fonction de classe de base 3 fonction de classe de base 4

Avec cela, nous arrivons à la fin de cet article sur les chaînes en C ++. J'espère que vous avez compris les différentes opérations qui peuvent y être effectuées. Si vous souhaitez en savoir plus, consultez la formation Java d'Edureka, une entreprise de formation en ligne de confiance. Edureka Les cours de formation et de certification sont conçus pour vous former aux concepts Java de base et avancés ainsi qu'à divers frameworks Java tels que Hibernate et Spring.

Vous avez une question pour nous? Veuillez le mentionner dans la section commentaires de ce blog et nous vous répondrons dans les plus brefs délais.