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 :

Fonctionnement de npos


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Juillet 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 26
    Par défaut Fonctionnement de npos
    Bonjour,

    Pouvez - vous me dire si le commentaire que j'ai mis dans la condition est correct svp ? Car je ne suis pas certain du bon fonctionnement de npos.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    std::string myline;
      i = myline.find(' ');
      if (i == std::string::npos)
    {
     // si je n'ai pas trouve un seul caractere 'espace' dans la chaine
    }
    Merci d'avance

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    npos est l'équivalent d'un pointeur sur "hors de toute chaine"
    string.find retourne string::npos quand le résultat est absent.

    Ton commentaire est donc bon.

    Pour ce genre de question, je te conseille de te tourner vers une référence du C++
    J'utilise personnellement cppreference

  3. #3
    Membre averti
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Juillet 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 26
    Par défaut
    Merci tout plein

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 115
    Billets dans le blog
    148
    Par défaut
    Bonjour,

    npos, c'est une valeur comme une autre (je crois que c'est -1, mais peu importe). Dans la doc de cpluplus.com il y a une erreur dans l'exemple associé à std::string::find. Le résultat est récupéré dans un unsigned, alors qu'il devrait l'être dans un size_t. La conversion vers l'unsigned fait échoué un test comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( result != std::string::npos )
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    mea culpa, je croyais me souvenir que find retournait un itérateur. C'est bien un index (typé size_t)

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 115
    Billets dans le blog
    148
    Par défaut
    Il faut faire attention, il y a deux std::find().
    Le premier, généraliste, se trouve dans algorithm et permet de trouver un élément sur n'importe quelle collection itérable. Celui-ci renvoit un itérator et s'il ne trouve pas d'élément, il renvoit .end()/std::end() -> http://en.cppreference.com/w/cpp/algorithm/find
    Le second, est une méthode de std::string, qui renvoie std::string::npos et c'est dont celui on a parlé dans les messages précédents. -> http://en.cppreference.com/w/cpp/str...ic_string/find
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/06/2003, 16h51
  2. Réponses: 5
    Dernier message: 14/05/2003, 14h51
  3. [Turbo Pascal] TP7 fonctionne en QWERTY
    Par callahan dans le forum Turbo Pascal
    Réponses: 9
    Dernier message: 08/02/2003, 21h49
  4. Prb de fonctionnement dans SaveDialog avecInitialDir
    Par boyerf dans le forum Composants VCL
    Réponses: 4
    Dernier message: 12/12/2002, 21h46
  5. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10

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