IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

iterator.end() ne detecte pas fin de la string


Sujet :

C++

  1. #1
    Membre habitu�
    Inscrit en
    Juin 2006
    Messages
    8
    D�tails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Par d�faut iterator.end() ne detecte pas fin de la string
    Bonjour,

    J'essaye de lire une cha�ne de caracteres, et je fais un test pour d�t�cter la fin de la cha�ne grace � un it�rateur (iterator.end() ) mais le programme ne d�t�cte pas la fin de la cha�ne.

    J'ai pourtant utilis� iterator comme indiqu� sur tous les sites internet... J'ai encore fait une betise ??

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #include <string>
    #include <iostream>
    #include <ctype.h>
    int main()
    {
     std::string paragraphe="un deux trois.";
     std::string::iterator iter; 
     iter=paragraphe.begin();
     int j=0;
     
     while ( iter!= paragraphe.end()) 
      {
           //si le caractere est imprimable
           if(!iscntrl(paragraphe[j]))
           {  std::cout<<paragraphe[j];
              j++;
           }
      }
     system("PAUSE");
     return EXIT_SUCCESS;
    }

  2. #2
    Membre �m�rite Avatar de MatRem
    Profil pro
    Inscrit en
    D�cembre 2002
    Messages
    750
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2002
    Messages : 750
    Par d�faut
    Il semblerait que tu oublies d'incr�menter ton it�rateur

    En plus tu n'as pas besoin d'utiliser une variable j, tu dois pouvoir utiliser l'it�rateur pour acc�der au contenu de la cha�ne si je ne m'abuse...

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    while ( iter!= paragraphe.end()) 
    {
           //si le caractere est imprimable
           if(!iscntrl(*iter)) std::cout<<(*iter);
           iter++;
    }
    A quoi te sert <ctype.h>? Si tu en as vraiment besoin, utilises plut�t <cctype> (m�me chose, mais pour le c++).

  3. #3
    Membre habitu�
    Inscrit en
    Juin 2006
    Messages
    8
    D�tails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Par d�faut
    wah...bah �a en fait des betises, en effet...
    merci beaucoup pour ton aide !

  4. #4
    Expert confirm�
    Avatar de Luc Hermitte
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2003
    Messages
    5 296
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 5 296
    Par d�faut
    J'ai tendance � pr�f�er les for() pour ce genre de choses. Moins de risque d'oublier d'incr�menter.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne r�ponds � aucune question technique par le biais de ce m�dia. Et de toutes fa�ons, ma BAL sur dvpz est pleine...

  5. #5
    Membre �m�rite Avatar de MatRem
    Profil pro
    Inscrit en
    D�cembre 2002
    Messages
    750
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2002
    Messages : 750
    Par d�faut
    J'utilise aussi les for pour ce genre de parcours, on dirait que c'est fait expr�s :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    for(iterator=conteneur.begin(); iterator!=conteneur.end(); iterator++){
       //traitements
    }

  6. #6
    Expert confirm�

    Inscrit en
    Novembre 2005
    Messages
    5 145
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par d�faut
    Citation Envoy� par Luc Hermitte
    J'ai tendance � pr�f�er les for() pour ce genre de choses. Moins de risque d'oublier d'incr�menter.
    Tu n'utiliserais pas std::copy pour copier un it�rateur filtrant de boost vers un ostream_iterator?

  7. #7
    Expert confirm�
    Avatar de Luc Hermitte
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2003
    Messages
    5 296
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 5 296
    Par d�faut
    Dans ce cas l� ? J'utilise copy_if.
    Je n'ai pas encore essay� les it�rateurs filtrant j'avoue.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne r�ponds � aucune question technique par le biais de ce m�dia. Et de toutes fa�ons, ma BAL sur dvpz est pleine...

  8. #8
    Membre �m�rite Avatar de MatRem
    Profil pro
    Inscrit en
    D�cembre 2002
    Messages
    750
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2002
    Messages : 750
    Par d�faut
    Vous voudriez pas donner des exemples de ce dont vous parlez?
    �a peut servir � tous ceux qui ne connaissent pas

  9. #9
    Expert confirm�

    Inscrit en
    Novembre 2005
    Messages
    5 145
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par d�faut
    Citation Envoy� par Luc Hermitte
    Dans ce cas l� ? J'utilise copy_if.
    Il me semblait bien que je l'avais vu quelque part, mais je ne l'avais trouve ni dans boost (ou j'ai mal regarde, je sais) ni dans la norme.

    Je n'ai pas encore essay� les it�rateurs filtrant j'avoue.
    J'en ai ecrit a la main, sans attendre boost.

    Je n'ai en fait utilise boost que dans un contexte prive et d'experimentation, au boulot nous utilisons un peu trop de compilateurs avec un support incertain de la norme pour envisager d'essayer

  10. #10
    Expert confirm�

    Inscrit en
    Novembre 2005
    Messages
    5 145
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par d�faut
    Citation Envoy� par MatRem
    Vous voudriez pas donner des exemples de ce dont vous parlez?
    �a peut servir � tous ceux qui ne connaissent pas
    regarde le contenu de <algorithm> et dans boost, les sections Iterators, Algorithms, Function Objects and higher-order programming, Template Metaprogramming. Ca devrait t'occuper les prochaines annees.

    En fait, on fait allusion a des techniques utilisees dans des langages fonctionnels, mais que je n'arrive pas a considerer comme naturelles quand je fais du C++ (ce n'est pas un manque de familiarite, ce sont celles que j'utilise quand j'ecris dans un langage fonctionnel).

    Dans l'exemple on devrait pouvoir arriver a une ecriture du genre:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    copy_if(ostream_iterator(cout), v.begin(), v.end(). !iscntrl(_1));
    en utilisant toutes les ressources que j'ai donnee. Si tu te limites a certaines, ca devient plus complique. De toute maniere, pour etre sur du resultat, il faut bien comprendre a la fois les templates et la gestion de la surchage, deux des points les plus compliques du C++ (je ne maitrise les details ni de l'un, ni de l'autre).

  11. #11
    Membre �m�rite Avatar de MatRem
    Profil pro
    Inscrit en
    D�cembre 2002
    Messages
    750
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2002
    Messages : 750
    Par d�faut
    merci

    L'�criture est plus condens�e, c'est sur.
    Mais au niveau des performances y a t'il des diff�rences?

    J'ai pas encore pris le temps d'utiliser boost, mais on dirait que c'est quand m�me bien int�ressant...

  12. #12
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    Mais au niveau des performances y a t'il des diff�rences?
    C'est principalement de la m�ta-programmation, donc apr�s compilation le code g�n�r� est exactement que ce que tu aurais �crit toi-m�me.

    Et puis pour ce genre de programme les performances sont-elles r�ellement importantes ? ...

    J'ai pas encore pris le temps d'utiliser boost, mais on dirait que c'est quand m�me bien int�ressant...
    Tr�s. Surtout que beaucoup de ses biblioth�ques seront int�gr�es au prochain standard.

  13. #13
    Membre �m�rite Avatar de MatRem
    Profil pro
    Inscrit en
    D�cembre 2002
    Messages
    750
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2002
    Messages : 750
    Par d�faut
    Ce nouveau standard on en entend souvent parler, mais est ce quelqu'un sait quand il aboutira?

  14. #14
    Expert confirm�

    Inscrit en
    Novembre 2005
    Messages
    5 145
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par d�faut
    Citation Envoy� par MatRem
    Ce nouveau standard on en entend souvent parler, mais est ce quelqu'un sait quand il aboutira?
    On veut le publier en 2009. Donc fin 2007 il devrait avoir des brouillons tr�s proches de ce qui sera publi�.

    Plus int�ressant, quand est-ce qu'on aura les premiers compilateurs conformes... et quand est-ce qu'on pourra compter dessus?

    En ce qui concerne C++98, le premier compilateur conforme fut disponible au public en 2003. Et on ne peut toujours pas compter sur le fait d'avoir un compilateur conforme mais le gros de la norme est g�n�ralement impl�ment�; les probl�mes principaux �tant la gestion d'export et la gestion de la recherche des noms en deux phases. La situation est relativement satisfaisante.

  15. #15
    Membre �m�rite Avatar de MatRem
    Profil pro
    Inscrit en
    D�cembre 2002
    Messages
    750
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2002
    Messages : 750
    Par d�faut
    On veut le publier en 2009
    C'est que tu travailles sur la norme?


    On peux encore utiliser boost, alors en attendant ce standard

  16. #16
    Expert confirm�
    Avatar de Luc Hermitte
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2003
    Messages
    5 296
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 5 296
    Par d�faut
    Citation Envoy� par Jean-Marc.Bourguet
    Il me semblait bien que je l'avais vu quelque part, mais je ne l'avais trouve ni dans boost (ou j'ai mal regarde, je sais) ni dans la norme.
    Je l'avais crois� dans le MEC++ pour la premi�re fois. Et une recherche sur boost::copy_if (qui n'existe pas) pointe sur une impl�mentation accompagn�e d'un petit commentaire comme quoi copy_if aurait �t� oubli� dans le standard de 98 -- une inattention de ce que j'ai compris.

    Citation Envoy� par Jean-Marc.Bourguet
    Je n'ai en fait utilise boost que dans un contexte prive et d'experimentation, au boulot nous utilisons un peu trop de compilateurs avec un support incertain de la norme pour envisager d'essayer
    Un projet qui "vient" de d�marrer nous permet de l'utiliser


    Sinon, c�t� perf, c'est effectivement pareil que le m�me code �crit � la main et directement (il peut ne m�me pas y avoir le co�t d'un appel de fonction). Plus quelques mineurs avantages (p/r aux impl�mentations manuelles) : cont.end() n'est �valu� qu'une seule fois ; pour les quelques cas o� cela fait encore une diff�rence la pr�-incr�mentation est utilis�e. J'ai un squelette de code qui fait que j'ai les m�mes "optims" en quelques touches frapp�es sur mon clavier.

    Je pr�f�re ces �critures quand ce que je r�alise des traitements simples qui tiennent en moins d'une ligne de boost::bind. Au del�, je d�veloppe rapidement.

    Pour le C++09, les USENautes sont globalement au courant. De m�me que d'autres ici m�me. Ca fait parti de l'actu C++.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne r�ponds � aucune question technique par le biais de ce m�dia. Et de toutes fa�ons, ma BAL sur dvpz est pleine...

  17. #17
    Expert confirm�

    Inscrit en
    Novembre 2005
    Messages
    5 145
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par d�faut
    Citation Envoy� par Luc Hermitte
    Je l'avais crois� dans le MEC++ pour la premi�re fois. Et une recherche sur boost::copy_if (qui n'existe pas) pointe sur une impl�mentation accompagn�e d'un petit commentaire comme quoi copy_if aurait �t� oubli� dans le standard de 98 -- une inattention de ce que j'ai compris.
    Il est dans mpl.

    Un projet qui "vient" de d�marrer nous permet de l'utiliser
    Nos projets d�marrent avec la n�cessit� de tourner sur une dizaine de cibles (on compte 32/64 bits comme deux cibles), avec des compilateurs impos�s et en r�cup�rrant au minimum un ou deux millions de lignes de code, au maximum, c'est en s'int�grant dans des syst�mes avec plusieurs dizaines de millions de lignes de code.

  18. #18
    Expert confirm�

    Inscrit en
    Novembre 2005
    Messages
    5 145
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par d�faut
    Citation Envoy� par MatRem
    C'est que tu travailles sur la norme?
    Non, je ne peux pas r�ellement pr�tendre que je travailles dessus J'ai juste l'oportunit� de voir les choses d'un peu plus pr�s que ce qui est publiquement disponible (par exemple � http://www.open-std.org/jtc1/sc22/wg21/) mais ce n'est pas grand chose... toute l'info que j'ai donn�e est disponible d'ailleurs.

    On peux encore utiliser boost, alors en attendant ce standard
    M�me apr�s.

  19. #19
    Membre �m�rite Avatar de MatRem
    Profil pro
    Inscrit en
    D�cembre 2002
    Messages
    750
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2002
    Messages : 750
    Par d�faut
    En parlant de open-std.org, j'ai essay� de chercher des documents qui pr�sentent la norme du c++ 98 et de sa mise � jour 2003.

    Je n'ai trouv� aucun document de synth�se, est ce que quelqu'un aurait des liens?

  20. #20
    Expert confirm�

    Inscrit en
    Novembre 2005
    Messages
    5 145
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par d�faut
    Citation Envoy� par MatRem
    En parlant de open-std.org, j'ai essay� de chercher des documents qui pr�sentent la norme du c++ 98 et de sa mise � jour 2003.

    Je n'ai trouv� aucun document de synth�se, est ce que quelqu'un aurait des liens?
    Pour la version d�finitive et imprim�e:

    http://www.amazon.fr/exec/obidos/ASI...130112-2724202

    Pour ce que je pense �tre le dernier brouillon public:

    http://www.open-std.org/jtc1/sc22/wg...ers/2001/n1316

+ R�pondre � la discussion
Cette discussion est r�solue.
Page 1 sur 2 12 Derni�reDerni�re

Discussions similaires

  1. Detecter la fin de l'ex�cution d'un script
    Par NoisetteProd dans le forum ASP
    R�ponses: 3
    Dernier message: 22/08/2006, 11h34
  2. detection evenement fin d'execution
    Par suckthewindow dans le forum Interfaces Graphiques en Java
    R�ponses: 2
    Dernier message: 18/07/2006, 18h32
  3. detection de fin de session
    Par elan_gi dans le forum Langage
    R�ponses: 18
    Dernier message: 23/06/2006, 12h39
  4. [Débutant][ThreadGroup] Détecter la fin de toutes les tâches
    Par onlytoine dans le forum API standards et tierces
    R�ponses: 1
    Dernier message: 19/09/2005, 10h47
  5. Detecter la fin d'un ecran de veille
    Par fredderf dans le forum MFC
    R�ponses: 12
    Dernier message: 13/06/2005, 17h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo