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 :

Probleme avec une chaine STRING !!!


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 68
    Points : 46
    Points
    46
    Par défaut Probleme avec une chaine STRING !!!
    Bonjour,
    J'ai une erreur de compilation sous Visual C++ et je ne comprend pas pourquoi (l'erreur doit etre simple pourtant !!).
    Voici mon code :

    int cptfichiercont=0; //Variable globale

    void GUI::CreerFichierContrainte()
    {

    std::string NomFichier="Fichiers_contrainte"+cptfichiercont+".dat";
    ofstream Fich (NomFichier.c_str());

    Fich<<sp_nb_cont->get_int_val()<<endl;
    Fich<<sp_centre_x->get_float_val()<<" "<<sp_centre_y->get_float_val()<<" "<<sp_centre_z->get_float_val()<<endl;
    Fich<<sp_deplt_x->get_float_val()<<" "<<sp_deplt_y->get_float_val()<<" "<<sp_deplt_z->get_float_val()<<endl;
    Fich.close();

    cptfichiercont ++;

    }

    En fait je veut juste qu'à chaque fois que je crée un fichier il se nomme différemment ex : Fichiers_contrainte0.dat, Fichiers_contrainte1.dat, etc

    Le compilo aime pas la ligne std::string NomFichier="Fichiers_contrainte"+cptfichiercont+".dat"; Pourtant je croyait qu'avec un string on pouvait additionner des chaines sans problemes et que la convertion int/string est implicite. (A noter qu'en écrivant : cptfichiercont.str() ca marche pas non plus).

    Voici l'erreur que j'ai : error C2110: cannot add two pointers

    Merci de m'aider.
    Bonne soirée.

  2. #2
    Membre éclairé Avatar de reggae
    Profil pro
    Inscrit en
    Août 2005
    Messages
    773
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2005
    Messages : 773
    Points : 795
    Points
    795
    Par défaut
    N'as-tu pas de headers?
    Si c'est le cas, cela me paraît normal que std::string ne soit pas reconnu...

  3. #3
    Membre averti Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Points : 369
    Points
    369
    Par défaut

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 68
    Points : 46
    Points
    46
    Par défaut
    G pas de header mais j'ai aussi essayé en enlevant std:: et en ajoutant #include <string> mais j'ai la meme erreur, je comprend pas ce qui va pas.
    Et désolé pour les balises , je suis nouveau ici et je savais pas que ca éxisté!! dsl

  5. #5
    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
    Ajouter des headers, c'est bien. Mais pourquoi enlever le std:: dans ce cas ?
    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.

  6. #6
    Membre expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Points : 3 065
    Points
    3 065
    Par défaut
    essaie en faisant ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    std::string NomFichier="Fichiers_contrainte";
             NomFichier+=cptfichiercont;
             NomFichier+=".dat";
    Hiko-seijuro

    n'cha - hoyoyo gang

    espace perso : http://hiko-seijuro.developpez.com
    dernier tuto : Introduction à l'éditeur de texte Emacs sous linux
    consulter les faqs : http://www.developpez.com/faq
    PAS DE QUESTIONS TECHNIQUES PAR MP OU MAIL

  7. #7
    Membre averti Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Points : 369
    Points
    369
    Par défaut
    Citation Envoyé par Bebert71
    j'ai aussi essayé en enlevant std:: et en ajoutant #include <string> mais j'ai la meme erreur
    Salut,

    #include <string> sert à définir le type de base string
    std:: sert à spécifier que ce qui suit est dans le namespace std

    Tu dois garder les deux


    Tu concatène un integer a une chaîne et je sais pas si ca te fait la même chose mais ca m'avait déjà causer des problèmes. Je te conseillerais de faire une petite fonction qui converti en string (voir FAQ)

  8. #8
    Membre éclairé Avatar de reggae
    Profil pro
    Inscrit en
    Août 2005
    Messages
    773
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2005
    Messages : 773
    Points : 795
    Points
    795

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Points : 621
    Points
    621
    Par défaut
    Additionner des char* et un int, ça ne donne pas de std::string.
    Mieux vaut additionner des std::string...

    La FAQ, ça peut aider : http://c.developpez.com/faq/cpp/?pag...GS_convertform
    On ne peut pas faire boire un âne qui n'a pas soif.

  10. #10
    Membre expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Points : 3 065
    Points
    3 065
    Par défaut
    arf ct un int j'avais pas vu :s
    Hiko-seijuro

    n'cha - hoyoyo gang

    espace perso : http://hiko-seijuro.developpez.com
    dernier tuto : Introduction à l'éditeur de texte Emacs sous linux
    consulter les faqs : http://www.developpez.com/faq
    PAS DE QUESTIONS TECHNIQUES PAR MP OU MAIL

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 68
    Points : 46
    Points
    46
    Par défaut Résolu
    En fait la convertion d'un int en string n'est pas du tout implicite.
    Il faut passer par une variable ostringstream (#include <sstream>), et la on peut concatener des int et des string.
    Voici mon code :
    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
     
    #include <string>
    #include <sstream>
     
    std::string NomFichier;
    if (i_cpt_fichier_cont!=1)
    {
    ostringstream oss;
    NomFichier="Fichiers_contrainte";
    std::string Extension=".dat";
    oss <<NomFichier<<"["<<i_cpt_fichier_cont<<"]"<<Extension;
    NomFichier=oss.str();
    }
    else
    {
    NomFichier="Fichiers_contrainte[1].dat";
    }
    Merci a tous.

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

Discussions similaires

  1. Retrouver Variable avec une chaine String
    Par jojo86 dans le forum Langage
    Réponses: 6
    Dernier message: 06/05/2012, 10h17
  2. [c++] probleme avec une chaine string
    Par zOoOm_10 dans le forum C++
    Réponses: 2
    Dernier message: 07/02/2011, 18h27
  3. probleme avec une chaine de caractére
    Par nebilabd dans le forum C
    Réponses: 9
    Dernier message: 24/12/2010, 18h29
  4. Probleme avec une chaine
    Par youyouta dans le forum Langage
    Réponses: 19
    Dernier message: 01/04/2008, 23h23
  5. Probleme avec une chaine de caractere
    Par Jim_Nastiq dans le forum Langage
    Réponses: 2
    Dernier message: 07/04/2006, 09h56

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