Les chaînes en c++

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 715 fois - Téléchargée 35 fois

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

Ajouter un commentaire Commentaires
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
7
Super !! 8/10 et encore je suis sévère !
Messages postés
1
Date d'inscription
mercredi 21 mai 2003
Statut
Membre
Dernière intervention
21 mai 2003

Salut,
Je suis nouveau (inscrit) au forum. Ce code devrait-il être inscrit au niveau 1 ? N'est-ce pas là une utilisation d'un conteneur de la STL, en l'occurrence la classe <string>. Il faudrait à mon avis savoir déjà comment est implantée une liste chaînée...De plus l'auteur ne parle même pas (pour orienter) de la STL.
Messages postés
455
Date d'inscription
samedi 26 octobre 2002
Statut
Membre
Dernière intervention
6 avril 2004
8
j'ai bien envie d'utiliser la fonction 'replace' pour changer les 'caractaires' en 'caractères'
Attention : la méthode de 'string' c_str() convertit en 'const char*' et non pas en const.
Il est très important de ne pas modifier le pointeur reçu (pas de delete[] par exemple

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.