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 :

conversion de vecteur de string en entier?


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Points : 61
    Points
    61
    Par défaut conversion de vecteur de string en entier?
    bonjour,

    J'aimerais savoir si on peut convertir un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    std::vector< std::string > m_VecDataRead
    en entier?

    Merci d'avance.

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par toutounesan Voir le message
    bonjour,

    J'aimerais savoir si on peut convertir un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    std::vector< std::string > m_VecDataRead
    en entier?

    Merci d'avance.
    même réponse que pour convertir un string en int
    http://cpp.developpez.com/faq/cpp/?p...RINGS_strtonum.

    Sinon pour convertir un vecteur de string en vecteur de int tu pourrai utiliser l'algorithm transform
    http://r0d.developpez.com/articles/algos-stl/
    en gros :


    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    std::vector< std::string > m_VecDataRead;
    .
    .
    .
    std::vector< int > m_VecDataInt;
     
    std::transform(VecDataRead.begin(),
                           VecDataRead.end(),
                           std::back_inserter(VecDataInt),
                           &StringToInt);

    StringToInt est le foncteur qui converti une string en int

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int StringToInt (std::string &s)
    {
      std::istringstream iss( s);
        // convertir en un int
        int nombre;
        iss >> nombre;
      return nombre;
    }

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Points : 61
    Points
    61
    Par défaut
    la fonction transform n'est pas dans la classe de std!

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par toutounesan Voir le message
    la fonction transform n'est pas dans la classe de std!
    #include <algorithm>

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Points : 61
    Points
    61
    Par défaut
    J'ajoute ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    std::vector< int > m_VecDataInt; 
    	std::t(m_VecDataRead.begin(),
                           VecDataRead.end(),
                           std::back_inserter(m_VecDataInt),
                           &StringToInt);
    et la librairire #include <algorithm>

    Mais j'ai toujours des erreurs.!!?


    StringToInt: identifieur non déclaré

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    faut rajouter le foncteur
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int StringToInt (std::string &s)
    {
      std::istringstream iss( s);
        // convertir en un int
        int nombre;
        iss >> nombre;
      return nombre;
    }
    et
    #include <sstream>


    Par contre évite de faire plusieurs poste pour le même problème... et essaie de comprendre les réponses que l'on te donne.

  7. #7
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 572
    Points : 631
    Points
    631
    Par défaut
    En meme temps, la c'est bien la preuve que faire le code pour qqun qui ne comprends pas la base, ça ne l'aide pas.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Points : 61
    Points
    61
    Par défaut
    J'ai toujours 2 erreurs:

    transform....5 arguments attendus-4 fournis

    voir la déclarartion de std transform

    J'ai du mal à comprendre. Il manque encore une librairie!! Je ne pense pas...

  9. #9
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    A toi de chercher un peu.
    Essaie de comprendre ce que l'on te donne.
    Sache que ce code marche (sous visual 2005 en tout cas).
    Code C++ : 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    #include <iostream>
    #include <sstream>
    #include <vector>
    #include <string>
    #include <algorithm>
     
    int StringToInt (std::string &s)
    {
      std::istringstream iss( s);
        // convertir en un int
        int nombre;
        iss >> nombre;
      return nombre;
    }
     
    int main(int argc, char **argv)
    {
    	std::vector<std::string> vect(5);
     
    	vect[0] = "0";
    	vect[1] = "1";
    	vect[2] = "2";
    	vect[3] = "3";
    	vect[4] = "4";
    	std::vector<int> vectint;
     
          std::transform(vect.begin(),
                           vect.end(),
                           std::back_inserter(vectint),
                           &StringToInt);
     return 0;
    }
    Si tu ne cherche pas à comprendre, ça ne sert a rien. On est pas là pour faire ton exo, mais pour t'aider.
    Maintenant si tu t'en fou, débrouille toi.

  10. #10
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    Citation Envoyé par Faiche Voir le message
    En meme temps, la c'est bien la preuve que faire le code pour qqun qui ne comprends pas la base, ça ne l'aide pas.
    +1
    Ca fait plusieurs fois que je le dis. toutounesan, achète un bouquin...
    99% des questions que tu poses sont dans dans la FAQ C++!

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Points : 61
    Points
    61
    Par défaut
    Ecoutez messieurs, j'ai eu des cours.
    Je suis ingénieur de l'école supérieure des procédés électroniques et optiques renommée Polytech' Orléans.
    J'ai eu un très grave accident de la route (plaque de verglas et j'ai heurté un arbre). J'ai eu un traumatisme crânien provoquant une hémiplégie droite.

    Je sais que j'ai du mal mais j'ai tous mes souvenirs avant l'accident.
    J'ai juste eu le temps de commencer à travailler et 3 semaines après, l'accident (27 février 2005).
    Je sais que pour s'en sortir, il faut de l'aide. J'ai compris ça un peu tardivement. Je voulais reprendre une vie normale sans l'aide des autres. C'était une grosse bétise.


    Je ne raconte pas ça pour que vous aillez pitié mais pour que vous compreniez ma situation. Alors si vous ne voulez plus m'aider, vous avez le droit.
    Mais c'est généreux et gentil d'aider un être humain, qui a la volonté d'y arriver.

    Au revoir.

  12. #12
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par toutounesan Voir le message
    Ecoutez messieurs, j'ai eu des cours.
    Je suis ingénieur de l'école supérieure des procédés électroniques et optiques renommée Polytech' Orléans.
    J'ai eu un très grave accident de la route (plaque de verglas et j'ai heurté un arbre). J'ai eu un traumatisme crânien provoquant une hémiplégie droite.

    Je sais que j'ai du mal mais j'ai tous mes souvenirs avant l'accident.
    J'ai juste eu le temps de commencer à travailler et 3 semaines après, l'accident (27 février 2005).
    Je sais que pour s'en sortir, il faut de l'aide. J'ai compris ça un peu tardivement. Je voulais reprendre une vie normale sans l'aide des autres. C'était une grosse bétise.


    Je ne raconte pas ça pour que vous aillez pitié mais pour que vous compreniez ma situation. Alors si vous ne voulez plus m'aider, vous avez le droit.
    Mais c'est généreux et gentil d'aider un être humain, qui a la volonté d'y arriver.

    Au revoir.
    C'est pas une question qu'on veut pas t'aider. Mais tu pose toujours les même questions. Demande plutôt ce que tu ne comprend pas dans nos réponses

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Points : 61
    Points
    61
    Par défaut
    ok

  14. #14
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    Je suis désolé pour toi et je comprend ton problème...
    Celà dit, on t'aide en te donnant des liens (FAQ C++) ou des éléments de réponses (exemple ICI où les réponses sont nombreuses et détaillées)

    On ne peux PAS faire mieux.
    L'étape d'après, c'est de te plonger dans un bouquin, et de tranquillement le lire. Tu mettras le temps que tu mettras, mais ça viendra... En continuant comme tu le fais, je pense personnellement que tu n'iras nulle part. En effet, dans un post on t'as donné une réponse à un problème. Jusque là, tout va bien. Nous sommes un forum d'entre aide, donc ça nous fait plaisir de t'aider.
    MAIS deux jours après tu reposes le même problème, à une variante près. Si tu avais vraiment compris notre réponse du post d'avant, tu n'aurais pas posé cette question... Tu manques donc de travail en profondeur... Ca ne sert à rien de courir après de nouveaux problèmes si tu n'as pas assimilés les précédents.

    Je comprend que ça soit difficile pour toi de t'y remettre, mais tu dois comprendre aussi que notre rôle n'est pas de donner des réponses toute crue. On ne peut pas faire plus que te donner des éléments de réponse. C'est à toi de construire ton nouveau monde (la programmation) à partir des éléments qu'on te donne, et ça prend du temps...
    La plupart de tes questions sont dans la FAQ C++. Si tu ne comprends pas les questions de la FAQ, alors demande nous, on se fera un plaisir de te répondre.

    J'ai personnellement parcouru et lu la FAQ C++ entière plusieurs fois. C'est une mine d'informations... Ce serait dommage de ne pas en profiter.

    Aide toi et le ciel t'aidera. Si tu ne fais pas l'effort de réfléchir et comprendre nos réponses, ça ne sert à rien de poser les questions... Tu feras du sur place, et nous donneras l'impression de perdre notre temps...

    Bonne continuation et bonne patience.

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Points : 61
    Points
    61
    Par défaut
    Je ne comprends pas cette ligne de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    std::transform(vect.begin(),
                           vect.end(),
                           std::back_inserter(vectint),
                           &StringToInt);

    Faut-il déclarer cette fonction? Je ne pense pas...

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Points : 61
    Points
    61
    Par défaut
    Pour moi, il manque un autre paramètre dans cette fonction...
    Vous n'êtes vraiment pas sympas avec moi.

    Aide moi, svp

  17. #17
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par toutounesan Voir le message
    Pour moi, il manque un autre paramètre dans cette fonction...
    Vous n'êtes vraiment pas sympas avec moi.

    Aide moi, svp
    tu compile avec quoi?

  18. #18
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    std::transform(vect.begin(),
                           vect.end(),
                           std::back_inserter(vectint),
                           &StringToInt);

    - std::transform : applique une fonction à un ensemble d'element d'un conteneur et met le resultat dans un autre

    - vect.begin() : debut des element du conteneur d'entré
    - vect.end() : fin des element du conteneur d'entré .
    Comme on va de begin() à end(), on traite tout les éléments du conteneur d'entrée.
    std::back_inserter(vectint) : créé un iterateur spéciale qui va empiler les resultat a la fin du conteneur de sortie

    - &StringToInt : pointeur sur le foncteur qui représente le traitement que l'on veut appliquer.

    pour ton cas, faut rajouter le foncteur
    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int StringToInt (std::string &s)
    {
      std::istringstream iss( s);
        // convertir en un int
        int nombre;
        iss >> nombre;
      return nombre;
    }

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Points : 61
    Points
    61
    Par défaut
    Je programme avec visual 2005

  20. #20
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par toutounesan Voir le message
    Je programme avec visual 2005
    c'est bizzare.
    Peut tu essayer le code que je t'ai donné
    et me donner les erreurs de compilation?

Discussions similaires

  1. Conversion string to entier <=>
    Par YanDerS dans le forum LabVIEW
    Réponses: 2
    Dernier message: 28/06/2010, 19h54
  2. Conversion string en entier via istringstream
    Par Guyzeug dans le forum C++
    Réponses: 2
    Dernier message: 09/06/2008, 15h42
  3. Conversion d'un string en entier
    Par taquilla dans le forum C++Builder
    Réponses: 3
    Dernier message: 11/11/2007, 22h59
  4. conversion string vers entier
    Par k_boy dans le forum VC++ .NET
    Réponses: 4
    Dernier message: 11/04/2007, 14h33
  5. Ajouter a une variable de type string, un entier
    Par Little-Freud dans le forum SL & STL
    Réponses: 12
    Dernier message: 05/03/2005, 20h33

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