Les chaînes en c++

Contenu du snippet

Les variables textes sont très utiles mais leur manipulation peut devenir complexe, ce code source utilise des fonctions de manipulations de textes simples comme la comparaison ou compliquées comme les recherche ou l?insertion de texte.

Source / Exemple :


#include <iostream>
#include <stdlib.h>
#include <string>

//avec certains compilateurs la ligne suivante est requise
//using namespace std;

int main() {
  // Initialisation
  string a, b;
  long cherche;

  cout << "Entrez une chaine longueur superieure a 5 sans espaces : ";
  getline(cin,a);     // getline permet les espaces contrairement à cin
  cout << endl;
  cout << "vous avec entre : " << a << endl;
  cout << "longeur de cette chaine : " << a.size() << endl;
  // On peut utiliser .length() au lieu de .size()

  /* Acces aux caractaires de la chaine ***********/
  // Notez que le premier caractaire de la chaine = 0 ce qui
  // cause un décalage : le 3e est donc à l'index 2
  cout << endl << "le 3e caractaire est : " << a[2] << endl;
  cout << "les 3 caractaires a partir du 2e caractaire sont : " << a.substr(1, 3);
  cout << endl << endl;

  cout << "Manipulation de la chaine " << endl;
  a.insert(2,"_!_");
  cout << "Insertion de _!_ apres le 2e caractaire : " << a << endl;

  a.replace(2,3,"toto");
  cout << "Remplace les caractaires 2,3,4 par toto : " << a << endl;

  a.erase(2, 4);
  cout << "Suppression de 4 caractaires en commencent a l'index 2 : " << a << endl;

  /* Recherches ***********************************/
  cout << endl << "Recherches de caractaires" << endl;
  cherche = a.find("titi");
  //cherche contient le premier titi dans la chaine si il
  //n'y est pas .find renvoie un nombre farfelu comme par
  //exemple 4294967295
  if (cherche < 0 || cherche > a.size()) {
    cout << "titi ne ce cache pas dans la chaine" << endl;
  } else {
    cout << "le premier titi se cache a l'index : " << cherche << endl;
  }
  cherche = a.rfind("titi");
  //cherche contient le premier titi dans la chaine si il
  //n'y est pas .find renvoie -1
  if (cherche < 0 || cherche > a.size()) {
    cout << "titi ne ce cache pas dans la chaine" << endl;
  } else {
    cout << "le dernier titi se cache a l'index : " << cherche << endl;
  }

  /* convertir un string en char[] ****************/
  char texte[a.size()+1]; // +1 car il y a un caractere nul à la fin
  strcpy (texte, a.c_str());
  cout << "La chaine est traduite en char[] : " << texte;

  /* Comparaisons *********************************/
  cout << endl << "Entrez une autre chaine : ";
  getline(cin,b);
  if (a == b) {
    cout << "C'est la meme chaine" << endl;
  } else {
    cout << "Les deux chaines sont differantes" << endl;
  }

  // Fin du programme
  system("PAUSE");
  return 0;
}

Conclusion :


J'espère que se code vous sera utile. N'hésitez pas à m'envoyer un message.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.