Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

LES FONCTIONS TRIM, RTRIM ET LTRIM DE VB EN C++ ( CHAINE DE CARACTÈRE )


Information sur la source

Catégorie :Chaîne de caractères Classé sous : chaîne, caractères, trim Niveau : Débutant Date de création : 11/07/2001 Date de mise à jour : 18/05/2007 02:22:34 Vu / téléchargé: 28 235 / 181

Note :
6,75 / 10 - par 4 personnes
6,75 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

Description

Il n'y à pas grand chose à dire... c'est seulement pour enlever les espaces à la droite(RTrim), à la gauche(LTrim) ou à gauche et à droite(Trim) dans une chaine... à première vue ca l'aire compliqué, il parraît y avoir beaucoup de code et tout... mais enlevé les commentaires et la fonction main() et il n'y auras presque plus rien :P  
 

Source

  • // Fichiers à inclure
  • #include <string.h>
  • #include <stdio.h>
  • // Prorotypes
  • void Trim(char *String); // Enlever les espaces à gauche et à droite dans une chaine
  • void RTrim(char *String); // Enlever les espaces à droite dans une chaine
  • void LTrim(char *String); // Enlever les espaces à gauche dans une chaine
  • /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
  • // Entré du programme
  • int main()
  • {
  • // Chaine(variable) avec laquel on va faire les teste
  • char *MaChaine = NULL; // L'initialise à NULL
  • // Efface l'écran
  • system("cls");
  • // Alloue de l'espace
  • MaChaine = new char[100];
  • // Copie une chaine de caractères dans l'espace alloué
  • strcpy(MaChaine, " Salut ca va bien? Moi oui! ");
  • cout << "Pour verifier s'il n'y a pas d'espaces je vais utilise -> pour le debut de la ligne";
  • cout << " et <- pour la fin de la ligne." << endl << endl;
  • cout << "Voici le chaine avant modification: " << endl;
  • // Affiche la chaine avant modifications
  • cout << "->" << MaChaine << "<-" << endl << endl;
  • cout << "Resultat avec la fonction RTrim(enlever les espaces a la droite)" << endl;
  • // Modifie la chaine(enlève les espaces à droite)
  • RTrim(MaChaine);
  • // Affiche la chaine
  • cout << "->" << MaChaine << "<-" << endl << endl;
  • cout << "Resultat avec la fonction LTrim(elever les espaces a gauche)" << endl;
  • // Modifie la chaine(enlève les espaces à gauche)
  • LTrim(MaChaine);
  • // Affiche la chaine
  • cout << "->" << MaChaine << "<-" << endl << endl;
  • cout << "J'ai rajouter des espaces a gauche et a droite et voila le resultat de la fonction Trim:" << endl;
  • // Réalloue de l'espace
  • MaChaine = new char[100];
  • // Copie une chaine de caractères dans l'espace alloué
  • strcpy(MaChaine, " Salut ca va bien? Moi oui! ");
  • // Enlève les espaces à gauche et à droite dans la chaine
  • Trim(MaChaine);
  • // Affiche la chaine
  • cout << "->" << MaChaine << "<-" << endl;
  • // Fait une pause
  • system("pause");
  • // Libère la mémoire alloué
  • delete [] MaChaine;
  • // Et c'est terminer!
  • return 0;
  • }
  • /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
  • // Enlever les espaces à droite et à gauche dans une chaine
  • void Trim(char *String)
  • {
  • // Enlève les espaces à gauche
  • LTrim(String);
  • // Enlève les espces à droite
  • RTrim(String);
  • }
  • /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
  • // Enlever les espaces à gauche dans une chaine
  • void LTrim(char *String)
  • {
  • // Pour effectuer les boucles
  • unsigned int i = 0;
  • unsigned int j = 0;
  • // Connaître la longeur de la chaine
  • unsigned int stringlen = (strlen(String) - 1);
  • // S'il y à des caractères(Si la chaine n'est pas vide)
  • if (stringlen > 0)
  • {
  • // Recherche la position du premier caractère qui n'est pas un espace dans la chaine
  • // Passe tous les caractères un à un à partir du début
  • while (String[i] == ' ')
  • i++;
  • // S'il y à bien des espaces à la gauche(début de la chaine)
  • if (i > 0)
  • {
  • // Décrémente la position de tous les caractères dans la chaine vers la gauche
  • // Ex:
  • // Si la chaine est par exemple: [ Ma chaine ]
  • // Après avoir passer par cette boucle elle va devenir
  • // [Ma chaine ]
  • for (j = 0; j <= (stringlen - i); j++)
  • String[j] = String[(i + j)];
  • String[j] = 0; // Ajoute le caractères(NULL) de fin de chaine
  • }
  • }
  • }
  • /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
  • // Enlever les espaces à la droite dans une chaine
  • void RTrim(char *String)
  • {
  • // Pour effectuer la boucle
  • unsigned int i = 0;
  • // Connaître la longeur de la chaine
  • unsigned int stringlen = (strlen(String) - 1);
  • // S'il y à des caractères(Si la chaine n'est pas vide)
  • if (stringlen > 0)
  • {
  • // Recherche le premier caractère qui n'est pas un espace à partir de la fin
  • i = stringlen;
  • while (String[i] == ' ')
  • i--;
  • // S'il y avait des espaces à la fin de la chaine
  • if (i < stringlen)
  • String[i] = 0; // On les enlève
  • // Ex:
  • // Ca c'est la chaine: [ Ma chaine ]
  • // Après avoir ajouter le 0(NULL) dans la chaine: [ Ma chaine0 ]
  • // Donc tous les espaces après le 0(caractère NULL) seront supprimer!
  • // Le résultat final seras: [ Ma chaine]
  • }
  • }
  • /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
// Fichiers à inclure
#include <string.h>
#include <stdio.h>

// Prorotypes
void Trim(char *String);   // Enlever les espaces à gauche et à droite dans une chaine
void RTrim(char *String);  // Enlever les espaces à droite dans une chaine
void LTrim(char *String);  // Enlever les espaces à gauche dans une chaine

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
// Entré du programme
int main()
{

// Chaine(variable) avec laquel on va faire les teste
char *MaChaine = NULL;  // L'initialise à NULL

      // Efface l'écran
      system("cls");

      // Alloue de l'espace
      MaChaine = new char[100];
      // Copie une chaine de caractères dans l'espace alloué
      strcpy(MaChaine, "   Salut ca va bien? Moi oui!   ");

      cout << "Pour verifier s'il n'y a pas d'espaces je vais utilise -> pour le debut de la ligne";
      cout << " et <- pour la fin de la ligne." << endl << endl;

      cout << "Voici le chaine avant modification: " << endl;
      // Affiche la chaine avant modifications
      cout << "->" << MaChaine << "<-" << endl << endl;

      cout << "Resultat avec la fonction RTrim(enlever les espaces a la droite)" << endl;

      // Modifie la chaine(enlève les espaces à droite)
      RTrim(MaChaine);
      // Affiche la chaine
      cout << "->" << MaChaine << "<-" << endl << endl;

      cout << "Resultat avec la fonction LTrim(elever les espaces a gauche)" << endl;

      // Modifie la chaine(enlève les espaces à gauche)
      LTrim(MaChaine);
      // Affiche la chaine
      cout << "->" << MaChaine << "<-" << endl << endl;

      cout << "J'ai rajouter des espaces a gauche et a droite et voila le resultat de la fonction Trim:" << endl;

      // Réalloue de l'espace
      MaChaine = new char[100];
      // Copie une chaine de caractères dans l'espace alloué
      strcpy(MaChaine, "   Salut ca va bien? Moi oui!   ");

      // Enlève les espaces à gauche et à droite dans la chaine
      Trim(MaChaine);
      // Affiche la chaine
      cout << "->" << MaChaine << "<-" << endl;

      // Fait une pause
      system("pause");

      // Libère la mémoire alloué
      delete [] MaChaine;
      // Et c'est terminer!
      return 0;

}

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
// Enlever les espaces à droite et à gauche dans une chaine
void Trim(char *String)
{

      // Enlève les espaces à gauche
      LTrim(String);
      // Enlève les espces à droite
      RTrim(String);

}

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
// Enlever les espaces à gauche dans une chaine
void LTrim(char *String)
{

// Pour effectuer les boucles
unsigned int i = 0;
unsigned int j = 0;
// Connaître la longeur de la chaine
unsigned int stringlen = (strlen(String) - 1);

      // S'il y à des caractères(Si la chaine n'est pas vide)
      if (stringlen > 0)
      {

            // Recherche la position du premier caractère qui n'est pas un espace dans la chaine
            // Passe tous les caractères un à un à partir du début
            while (String[i] == ' ')
                  i++;

            // S'il y à bien des espaces à la gauche(début de la chaine)
            if (i > 0)
            {
                  // Décrémente la position de tous les caractères dans la chaine vers la gauche
                  // Ex:
                  // Si la chaine est par exemple:  [  Ma chaine  ]
                  // Après avoir passer par cette boucle elle va devenir
                  // [Ma chaine  ]

                  for (j = 0; j <= (stringlen - i); j++)
                        String[j] = String[(i + j)];

                  String[j] = 0;  // Ajoute le caractères(NULL) de fin de chaine
            }

      }

}

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
// Enlever les espaces à la droite dans une chaine
void RTrim(char *String)
{

// Pour effectuer la boucle
unsigned int i = 0;
// Connaître la longeur de la chaine
unsigned int stringlen = (strlen(String) - 1);

      // S'il y à des caractères(Si la chaine n'est pas vide)
      if (stringlen > 0)
      {

            // Recherche le premier caractère qui n'est pas un espace à partir de la fin
            i = stringlen;
            while (String[i] == ' ')
                  i--;

            // S'il y avait des espaces à la fin de la chaine
            if (i < stringlen)
                  String[i] = 0;  // On les enlève

            // Ex:
            // Ca c'est la chaine:  [  Ma chaine    ]
            // Après avoir ajouter le 0(NULL) dans la chaine: [  Ma chaine0   ]
            // Donc tous les espaces après le 0(caractère NULL) seront supprimer!
            // Le résultat final seras: [  Ma chaine]

      }

}

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */


  

Conclusion

Créé et tester sous Dev-C++ 4. Dans le fichier zip il y à le même code et l'exécutable(console).

En cas de problème(s) avec ce code ou autre(s), laissez moi un message! :)

 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   Trim, LTrim, RTrim
    • Main.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier5 232 octets
    • main.oTélécharger ce fichier [Réservé aux membres club]3 411 octets
    • rsrc.oTélécharger ce fichier [Réservé aux membres club]1 026 octets
    • Rsrc.rcTélécharger ce fichier [Réservé aux membres club]Voir ce fichier78 octets
    • Trim.devTélécharger ce fichier [Réservé aux membres club]348 octets
    • Trim.exeTélécharger ce fichier [Réservé aux membres club]76 288 octets

Télécharger le zip

Historique

18 mai 2007 02:22:34 :
ajout des mots clés( Vous aussi, mettez vos sources à jour !!! Ajoutez les mots clés !!! )

Commentaires et avis

signaler à un administrateur
Commentaire de scelw le 11/12/2004 10:51:50

moi kan je ve afficher qqchose je mets juste :
cout << "texte_à_afficher"

à quoi servent les "<< endl" ????

signaler à un administrateur
Commentaire de banane_rose le 01/08/2005 20:47:19

endl = retour à la ligne

signaler à un administrateur
Commentaire de scelw le 01/08/2005 21:41:59

après information, endl = un flush (la mémoire se vide) + retour à la ligne.

signaler à un administrateur
Commentaire de fobiga le 08/06/2007 15:35:08

Vous avez déjà testé ce code. Pour moi le RTrim ne marche pas.
RTrim( " ABC " ) donne " AB"
De plus, la première version affichée dans l'article n'est pas la même que celle du zip.
Heureusement, d'ailleurs car elle avait une deuxième erreur.
RTrim( " " ) laissait la chaîne inchangée.
Quand on livre du code, le minimum est de le tester.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Pb Chaîne de caractères [ par mmuller57 ] Bonjour,J'ai créé un petit programme qui convertit les caractères d'une chaîne de caractères par leurs codes ASCII :#include &lt;iostream&gt;#include Affichage d'une chaîne de caractères [ par kalf2000 ] bonjour,j'ai un petit souci, je réussit à récupérer à partir d'un fichier texte une chaîne de caractère et à la mettre dans un tableau de caractère (c Conversion d'un DWORD en chaîne de caractères [ par annplop ] Bonjour,je code en c++ (avec visual c++ 6), et j'ai besoin de convertir une variable de type DWORD en chaîne de caractères.Est-ce possible et si oui c découper une chaîne da caractères à partir d'un caratère point"." [ par oudkaramla ] salut tout le monde,j'ai un problème:si j'ai une chaîne de caractère(nom du fichier par exemple) dont je ne sais pas la longeur, comment je fais pour lire des caractères dans une chaîne [ par phenX ] voila mon probl&#232;me: j'ai une cha&#238;ne de caract&#232;re (qu'on nommera ChCar) saisi par l'utilisateur, je voudrais pouvoir connaitre les quatr concatenation d'une chaîne de caractères [ par davdav73 ] Alors je c=programme sous builder 6 C++ et je voudrais savoir comment ajouter des chiffres entiers les uns apr&#232;s les autres. J'ai un pav&#233; nu chaîne de caractères [ par ProgVal ] Bojour,Comment faît-on pour "découper" une chaîne de cerartères? Par exemple 1 caractère sur 2.Merci d'avanceShowMessage ("signé ProgVal") comment retrouver l'adresse d'une chaîne de caractères dans un tableau de chaînes de caractères [ par telecomakram ] Bonjour,Comment je peux de retrouver l'adresse d'une chaîne de caractères dans un tableau de chaînes de caractères Son prototype sera: <font face conversion d'une chaîne de caractères en hexa [ par AnneG35 ] Bonjour,Je développe un module à intégrer à un serveur, en C++ sous Visual Studio. Les échanges client-serveur sont des requêtes binaires. Pour constr


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,452 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.