begin process at 2012 05 28 15:19:59
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

des chaines en C++ (Urgent!)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

des chaines en C++ (Urgent!)

samedi 26 février 2005 à 20:43:27 | des chaines en C++ (Urgent!)

GIRAFE ENRHUMEE

Membre Club

ce bout de code est censé servir à supprimer tous les espaces superflus à gauche et à droite d'une chaîne. Exemple :
"  Bon jour     "       devient      "Bon jour"

mais ça ne marche pas. Je reçois un message d'erreur au sujet de remove. no matching function for call to basic_string<etc...

int epurer_chaine(const string&s){
  int a=0,i;
  while(s[0]==' ')s.remove(0,1);
  while(s[i=s.size()-1]==' '){
    s.remove(i,1);
    a=1;
  }
  return a;
}

samedi 26 février 2005 à 21:14:04 | Re : des chaines en C++ (Urgent!)

yoyo269

Membre Club

Voilà ce que tu cherches :

/*================================= Enlève les espaces du début =================================*/
char * LTrim(char * Chaine)
{
    unsigned int i = 0;
    unsigned int j = 0;
    unsigned int Longueur = strlen(Chaine);

    if (Longueur > 0)
    {
        while (Chaine[i] == ' ') i++;
        if (i > 0)
        {
            for (j = 0;j <= (Longueur - i);j++) Chaine[j] = Chaine[(i + j)];
            Chaine[j] = 0;
        }
    }
    return Chaine;
}
/*================================= Enlève les espaces de la fin ================================*/
char * RTrim(char * Chaine)
{
    unsigned int i = 0;
    unsigned int Longueur = strlen(Chaine);

    if (Longueur > 0)
    {
        i = Longueur;
        while (Chaine[i - 1] == ' ') i--;
        if (i <= Longueur) Chaine[i] = 0;
    }
    return Chaine;
}
/*=========================== Enlève les espaces du début et de la fin ==========================*/
char * Trim(char * Chaine)
{
    LTrim(Chaine);
    RTrim(Chaine);
    return Chaine;
}

YOYO, @+.
YOYO

samedi 26 février 2005 à 21:22:04 | Re : des chaines en C++ (Urgent!)

GIRAFE ENRHUMEE

Membre Club

merci, mais j'essai de résoudre le probleme avec la classe string.
j'ai d'ailleurs recopier un exemple d'un livre, et on m'affiche le même message d'erreur.

samedi 26 février 2005 à 21:24:30 | Re : des chaines en C++ (Urgent!)

BruNews

Administrateur CodeS-SourceS
allez plaisanterie du soir... si on veut coder alors:

__declspec(naked) int __fastcall bntrim(char* psrc) // retour nombre char
{ // ECX = psrc
  __asm {
    mov   [esp-4], ecx
    mov   eax, ecx
Ltrm1:
    mov   dl, [ecx]
    inc   ecx
    cmp   dl, 32
    je    short Ltrm1
    dec   ecx            ; // 1er char != 32
    dec   eax
Ltrm2:
    mov   dl, [ecx]
    inc   eax
    inc   ecx
    mov   [eax], dl
    test  dl, dl
    jnz   short Ltrm2
    mov   ecx, [esp-4]    ; // eax est zero final
Ltrm3:
    mov   byte ptr[eax], 0
    cmp   eax, ecx
    jna   short Ltrm4
    dec   eax
    cmp   byte ptr[eax], 32
    je    short Ltrm3
    inc   eax
Ltrm4:
    sub   eax, ecx
    ret   0
  }
}

servirait à quoi de retourner le pointeur char* qu'on reçoit, l'appelant l'a déjà puisqu'il le passe à la func.

ciao...
BruNews, MVP VC++
samedi 26 février 2005 à 21:29:39 | Re : des chaines en C++ (Urgent!)

GIRAFE ENRHUMEE

Membre Club
Ton message ne m'est d'aucune aide. Si tu peux m'aider, merci de me répondre.
dimanche 27 février 2005 à 00:46:39 | Re : des chaines en C++ (Urgent!)

Hylvenir

:)
j'adore la réponse de brunews...

Pour ta réponse, cherche un peu en utilisant
find_first_not_of  de la classe std::string par exemple.



Ma participation à la saturation du net:
http://hylvenir.free.fr
dimanche 27 février 2005 à 00:49:51 | Re : des chaines en C++ (Urgent!)

vecchio56

Administrateur CodeS-SourceS
Réponse acceptée !
-erase n'est pas membre de la classe string;
-si tu passes ta chaine en const, tu auras du mal à la modifier sans faire raler le compilateur
-à quoi sert a?

Voila une solution qui ressemble a ce que tu avais écrit au début:

int epurer_chaine(string&s){
  int a=0,i;
  while(s[0]==' ')s.erase(s.begin());
  while(s[i=s.size()-1]==' '){
    s.erase(s.end() - 1);
    a=1;
  }
  return a;
}
dimanche 27 février 2005 à 01:32:22 | Re : des chaines en C++ (Urgent!)

Hylvenir

Si on veut pas coder ( ou si on travaille sur un PA-RISC :) )

string ltrim( const string& s, const char* c = " " )
{
  string::size_type found = s.find_first_not_of( c );
  if ( found == string::npos )
    found = s.size();
  return string( s, found ); 
}

// j'ai viré le a pour l'occasion.
Vechio56, quand tu écris erase, faut lire remove ;)



Ma participation à la saturation du net:
http://hylvenir.free.fr
dimanche 27 février 2005 à 01:40:42 | Re : des chaines en C++ (Urgent!)

Hylvenir

si la chaine est "        ";
s.size() vaut 0 à la fin de la première boucle, donc
accès à s[-1]....


int epurer_chaine(string&s){
  int a=0,i;
  while(s[0]==' ')s.erase(s.begin());
  while(s[i=s.size()-1]==' '){                          ///   <-------- bug 
    s.erase(s.end() - 1);
    a=1;
  }
  return a;
}


Ma participation à la saturation du net:
http://hylvenir.free.fr
dimanche 27 février 2005 à 11:06:22 | Re : des chaines en C++ (Urgent!)

BruNews

Administrateur CodeS-SourceS
Voila qu'il a enfin sa réponse et, cerise sur le gateau, y a même toutes chances que ce soit plus lent qu'un 'Trim' VB.
Il en faut pour tous les gouts...

ciao...
BruNews, MVP VC++

1 2

Cette discussion est classée dans : urgent, while, jour, chaines, remove


Répondre à ce message

Sujets en rapport avec ce message

la fonction while [ par romolo6 ] Bon jour à tous je commence depuis quelque jour à ecrire quelque petit code de debutant et j'essaye d'executer le suivant: #include #include main( Mise à jour interface durant traitement [ par kalimanu ] Bonjour, J'ai besoin de votre aide car je ne parvient pas à combiner traitement et mise à jour interface. Explications: J'ai développé un programme q TP tirage de boule [ par Ussama ] salut mes amies je suis besoin de votre aide j'ai un projet de développement d'une application et j'ai eu des gros problèmes >>le problème a résoud remplissage d'une variable depuis les données d'un fichier [ par sergioramos04 ] slt à tous, j'ai un fichier dont le contenu est: Granda Av paco siro Quartier vicenté Espagne 0675 35 62 32 45 PALMIRA n 35 AV angletter Espagne 05 Bezoin de votre aide c Urgent [ par guernine ] S.V.P pouvez-vous me donner des codes en programmation C ou des algorithme en c des différent types de cryptage c urgent plzzzz[^^ange] code source d"un jeu [ par lamisso ] slt svp c urgent je cherche un code source d'un simple jeu fait sous linux avec thread ou signal c urgent ,jesper avoir reponse avant jeudi merci[^^


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 : 1,279 sec (4)

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