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 :

std::string problème d'initialisation


Sujet :

C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 209
    Points : 83
    Points
    83
    Par défaut std::string problème d'initialisation
    Bonjour


    j'ai un problème avec std::string c'est un peu bête mais je suis bloqué puis la fac ne le traite pas voilà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    )
    {
        std::string s("");
        //s="[TC"+msg.orig_addr()+" "+msg.hop_count()+" "+ msg.msg_seq_num()+" ";
        int count=msg.tc().count;
        for(int i=0 ; i<count;i++)
        {
     
           s+= msg.tc().nb_main_addr(i);  
            s+=" ";
     
        }
    mon erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    error: variable ‘std::string s’ has initializer but incomplete type
    je voudrais savoir aussi s'il y a une méthode de convertir vers string sans passer par ostream

    merci

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Ton message d'erreur ressemble à ce qu'on a quand on a oublié d'inclure <string>...
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    Ton message d'erreur ressemble à ce qu'on a quand on a oublié d'inclure <string>...
    Moi confirme

    Citation Envoyé par yassinegoth
    je voudrais savoir aussi s'il y a une méthode de convertir vers string sans passer par ostream
    Non. L'idée est de passer par un std::ostringstream.

    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
     
    #include <sstream>
    #include <string>
     
    template <class _Type>
    std::string to_string(const _Type& v)
    {
        std::ostringstream stream;
        stream << v;
        return stream.str();
    }
     
    // "spécialisation"(*) pour std::string
    template <>
    std::string to_string<std::string>(const std::string& v)
    { return v; }
    (*) note : ça ressemble à une spécialisation, mais ce n'est pas une spécialisation. C'est une surcharge.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 209
    Points : 83
    Points
    83
    Par défaut
    vous aviez raison enfait
    pour la conversion j ai désigné la fonction to_string comme amie de ma classe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    friend std::string to_string( const int & Value );
    je l ai inclu dans mon .cc comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    std::string CMUTrace::to_string( const int & Value )
    {
        // utiliser un flux de sortie pour créer la chaîne
        std::ostringstream oss;
        // écrire la valeur dans le flux
        oss << Value;
        // renvoyer une string
        return oss.str();
    }
    et je l'ai appellé dans une de mes methodes :

    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
    else if (op->msg(i).msg_type() == OLSR_TC_MSG)
                            {
                                std::string s2;
                                s2 = "[TC %d %d %d ";
                                   int count=op->msg(i).tc().count;
                            for(int i=0 ; i<count;i++)
                                 {
     
                                s2.append(to_string(op->msg(i).tc().nb_main_addr(i)));
                                     s2+=" ";
     
                                    }
     
                                s2+="]";
                            }
    et enfin mon erreur :s
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error: ‘string’ in namespace ‘std’ does not name a type
    aucune idée!!!

    merci

  5. #5
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    Citation Envoyé par yassinegoth Voir le message
    et enfin mon erreur :s
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error: ‘string’ in namespace ‘std’ does not name a type
    aucune idée!!!
    As-tu ajouté les include comme indiqué par Loïc et Emmanuel :
    fichier.cc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include <string>
    #include <sstream>

Discussions similaires

  1. Problème avec std::string
    Par Laughing Man dans le forum C++
    Réponses: 18
    Dernier message: 07/02/2008, 19h04
  2. Problème Cast char* en std::string
    Par inovah dans le forum SL & STL
    Réponses: 1
    Dernier message: 30/10/2007, 16h32
  3. Problème std::string et operator <<
    Par jomeo dans le forum SL & STL
    Réponses: 2
    Dernier message: 21/02/2007, 11h36
  4. Réponses: 1
    Dernier message: 20/02/2007, 17h17
  5. (Problème avec...) conversion de std::string en char
    Par crossbowman dans le forum SL & STL
    Réponses: 7
    Dernier message: 05/03/2006, 19h54

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