begin process at 2012 05 27 14:15:19
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaîne de caractères

 > LES CHAÎNES EN C++

LES CHAÎNES EN C++


 Information sur la source

Note :
4 / 10 - par 3 personnes
4,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Chaîne de caractères Niveau :Débutant Date de création :26/01/2003 Date de mise à jour :26/01/2003 15:10:43 Vu :4 654

Auteur : RaphAstronome

Ecrire un message privé
Site perso
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

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

  • #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;
  • }
#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.


 Sources du même auteur

MEMORYTEST
TABLEAUX DYNAMIQUES À UNE OU DEUX DIMENSIONS
AFFICHER L'HEURE SANS CTIME (DEV C++)

 Sources de la même categorie

CALCUL DE CLEF RIB par Renfield
Source avec Zip [C] WD_STRING V2.2 par cyberripper
Source avec Zip LES STRING EN C, AFFECTATION, CONCATÉNATION, SPLIT, ... par appranting
Source avec Zip [C] WD_STRING V1.9 par cyberripper
Source avec Zip LIBRAIRIE LANGUAGES par astro53

Commentaires et avis

Commentaire de vieuxLion le 26/01/2003 16:20:59

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

Commentaire de ywaassa le 21/05/2003 16:46:16

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  &lt;string&gt;. 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.

Commentaire de victorcoasne le 11/05/2004 17:53:13

Super !! 8/10 et encore je suis sévère !

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,640 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales