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 type : pas de #include <string> ?


Sujet :

C++

  1. #1
    Membre éclairé
    Avatar de Le Barde
    Homme Profil pro
    Chanteur
    Inscrit en
    Juillet 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chanteur

    Informations forums :
    Inscription : Juillet 2007
    Messages : 343
    Par défaut Conversion de type : pas de #include <string> ?
    Bonjour,

    Je voudrais convertir un nombre double en chaîne de caractères... C'est faisable ? Je n'ai pas trop vu dans les cours de C++, et le (char*)MaVariableDouble ne fontionne pas...

    Merci d'avance.

  2. #2
    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
    C'est dans la FAQ.

    http://c.developpez.com/faq/cpp

  3. #3
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Je voudrais convertir un nombre double en chaîne de caractères... C'est faisable ?
    Bien sûr.

    Je n'ai pas trop vu dans les cours de C++, et le (char*)MaVariableDouble ne fontionne pas...
    Normal, tu dis à C++ de considérer que ta variable est en fait un pointeur vers un char.

    Regarde la FAQ, il devrait y avoir une entrée sur les conversions textuelles avec les stringstreams.

  4. #4
    Membre éclairé
    Avatar de Le Barde
    Homme Profil pro
    Chanteur
    Inscrit en
    Juillet 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chanteur

    Informations forums :
    Inscription : Juillet 2007
    Messages : 343
    Par défaut
    Merci

    J'ai donc regardé du côté de <string> et <string.h>.

    Problème : lorsque je fais un #include <string>, comme dans le fichier suivant :

    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
    #ifndef Console_H
    #define Console_H
     
    #include <string>
     
    // Cette classe s'occupe des Entrées-sorties dans la console.
     
    template <class TYPE>
    class Console
    {
    	public:
    	Console();
    	static void Afficher(char* Prompt);
    	static void Afficher(TYPE Prompt);
    	static std::string EnString(TYPE Transformazione);
    };
     
     
    #endif
    gcc me renvoie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    portable:~/Documents/Travail/recherche/StageFlowShop/C++$ make
    g++ -c -pipe -Wall -W -O2 -D_REENTRANT  -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED -DQT_TABLET_SUPPORT -I/usr/share/qt3/mkspecs/default -I. -I/usr/include/qt3 -o Application.o Application.cpp
    Application.cpp:18: attention : unused parameter «argc"
    Application.cpp:18: attention : unused parameter «argv"
    g++ -c -pipe -Wall -W -O2 -D_REENTRANT  -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED -DQT_TABLET_SUPPORT -I/usr/share/qt3/mkspecs/default -I. -I/usr/include/qt3 -o BandB.o Flowshop/BandB/BandB.cpp
    gcc -c -pipe -Wall -W -O2 -D_REENTRANT  -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED -DQT_TABLET_SUPPORT -I/usr/share/qt3/mkspecs/default -I. -I/usr/include/qt3 -o Console.o Entrees-Sorties/Console.h
    Entrees-Sorties/Console.h:4:18: erreur: string : Aucun fichier ou répertoire de ce type
    Entrees-Sorties/Console.h:8: erreur: expected «=", «,", «;", «asm" or «__attribute__" before «<" token
    make: *** [Console.o] Erreur 1
    portable:~/Documents/Travail/recherche/StageFlowShop/C++$
    Pour mémoire, je développe sous Ubuntu. Comment se fait-il que je n'aie pas <string> ? (Le <string.h> par contre, est reconnu si je l'inclus.)

  5. #5
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Un conseil, comme l'ont dit Laurent et loufoque, regarde http://c.developpez.com/faq/cpp/?page=strings .

    Et : NE JAMAIS COMPILER UN EN-TÊTE!.

    Sinon, vérifie ton installation de la bibliothèque standard.

    Pourquoi 2 méthodes Afficher? (ces deux méthodes devraient être une seule)

  6. #6
    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
    gcc ... Console.h
    Ca devrait être g++ et Console.cpp, non ?

  7. #7
    Membre éclairé
    Avatar de Le Barde
    Homme Profil pro
    Chanteur
    Inscrit en
    Juillet 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chanteur

    Informations forums :
    Inscription : Juillet 2007
    Messages : 343
    Par défaut
    Citation Envoyé par Alp
    Un conseil, comme l'ont dit Laurent et loufoque, regarde http://c.developpez.com/faq/cpp/?page=strings .
    J'ai regardé, j'ai regardé mon problème, ce n'est plus ça, c'est de trouver à inclure le fichier <string>

    Citation Envoyé par Alp
    Et : NE JAMAIS COMPILER UN EN-TÊTE!.
    Je sais, je sais. Pour générer le makefile, j'utilise qmake, qui est pas mal. Je présume qu'il ne doit tout de même pas compiler le fichier .h, il regarde juste si c'est cohérent.

    Sinon, vérifie ton installation de la bibliothèque standard.
    Oui c'était ça ma question, parce que j'ai également <iostream> itou itou

    Pourquoi 2 méthodes Afficher? (ces deux méthodes devraient être une seule)
    J'avoue, je suis en train de coder et j'utilise les deux méthodes pour quelques essais comparatifs.

  8. #8
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Tu as déjà pu te servir de la bibliothèque standard sur ta machine ?

    Si ce n'est pas le cas, comment as-tu installé la SL ?

  9. #9
    Membre éclairé
    Avatar de Le Barde
    Homme Profil pro
    Chanteur
    Inscrit en
    Juillet 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chanteur

    Informations forums :
    Inscription : Juillet 2007
    Messages : 343
    Par défaut
    En fait j'ai déjà pu utiliser la bibliothèque standard, mais je n'avais pas utilisé string (oui, je débute, et petit à petit je découvre la bilbliothèque standard ). Notamment, IOSTREAM.

    Sous Ubuntu, je crois que la SL est installée de base, ou alors c'est le paquet build-essentials qui le contient (qui est bien installé sur ma machine).

    C'est pour ça que je ne comprends pas mon problème.

  10. #10
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    visiblement, il y aurait peut etre bien un léger problème au niveaux des chemins d'acces...

    Es tu sur qu'un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #include <iostream>
     
    int main()
    {
        std::cout<<"hello world";
        return 0;
    }
    compile et s'exécute correctement (sans utilisre qmake pour créer un makefile )

    (s'il compile) Es tu sur que l'on trouve bien, dans le répertoire qui contient iostream, les autres fichiers de la SL (string, fstream, sstream et autres)

    Es tu sur que qmake est correctement configuré au niveau de ses chemins d'inclusion

    Visiblement, la commande créée par qmake signale /usr/include/qt3 et ses sous dossiers comme chemin d'inclusion, peut etre serait il intéressant de le configurer de manière à ce qu'il signale également le dossiers dans lequel se trouvent les entetes génériques (/usr/include, peut etre ) :quesiton:
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  11. #11
    Membre éclairé
    Avatar de Le Barde
    Homme Profil pro
    Chanteur
    Inscrit en
    Juillet 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chanteur

    Informations forums :
    Inscription : Juillet 2007
    Messages : 343
    Par défaut
    EDIT : j'ai utilisé gcc pour compiler le Hello World... et tout plein d'erreurs ^^

    g++ passe sans problème.

    Dans mon projet, visiblement c'est gcc et non g++ qui est appelé, comme on le voit dans tous les messages d'erreur.
    Reste plus qu'à trouver l'option dans qmake pour utiliser g++...

  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 faut pa compiler avec gcc... Le compilo C++ c'est g++.

  13. #13
    Membre éclairé
    Avatar de Le Barde
    Homme Profil pro
    Chanteur
    Inscrit en
    Juillet 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chanteur

    Informations forums :
    Inscription : Juillet 2007
    Messages : 343
    Par défaut
    lol oui, je venais de m'en rendre compte...

  14. #14
    Membre éclairé
    Avatar de Le Barde
    Homme Profil pro
    Chanteur
    Inscrit en
    Juillet 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chanteur

    Informations forums :
    Inscription : Juillet 2007
    Messages : 343
    Par défaut
    J'utilise qmake, quelqu'un sait quelle est l'option à mettre dans le fichier de projet pour spécifier l'utilisation de g++ ?

  15. #15
    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
    On peut voir ton fichier qmake ? Parce que là on dirait que tu lui donnes à compiler un fichier .h, et qu'il déduit de l'extension qu'il faut utiliser gcc.

  16. #16
    Membre éclairé
    Avatar de Le Barde
    Homme Profil pro
    Chanteur
    Inscrit en
    Juillet 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chanteur

    Informations forums :
    Inscription : Juillet 2007
    Messages : 343
    Par défaut
    Tu me mets un gros doute, Laurent...

    Voici le fichier Projet.pro :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    # TARGET = 
    TEMPLATE = app
    LANGUAGE = C++
    DESTDIR  = Executable
     
    SOURCES = Application.cpp
     
    # Ajout des sources du Flowshop.
     
    	SOURCES += Flowshop/Atelier.cpp 
    	HEADERS += Flowshop/Atelier.h
     
    	# Ajout du Branch and Bound
    	SOURCES += Flowshop/BandB/BandB.cpp Flowshop/BandB/ListeNoeuds.cpp Flowshop/BandB/Noeud.cpp
    	HEADERS += Flowshop/BandB/BandB.h   Flowshop/BandB/ListeNoeuds.h   Flowshop/BandB/Noeud.h
     
    	# Ajout des autres membres du Flowshop
    	SOURCES += Flowshop/Distrib.cpp Flowshop/Ordo.cpp
    	HEADERS += Flowshop/Distrib.h   Flowshop/Ordo.h
     
     
    # Ajout des classes d'entrées-sorties
     
    	SOURCES += Entrees-Sorties/Console.h
    	HEADERS += Entrees-Sorties/Console.cpp
     
    # Classes annexes 
     
    	SOURCES += ClassesAnnexes/Array.cpp
    	HEADERS += ClassesAnnexes/Array.h
    Je me lance pour la question qui tue : les fichiers d'en-tête en C++, d'usage on met .hpp ? J'ai cru voir ça quelque-part, aussi.
    Parce que tous les projets que j'ai réalisés dans mon école avaient les extensions des en-têtes en .h... Mais c'était sous Visual Studio.

    Donc il faut mettre .hpp ?

  17. #17
    Membre éclairé
    Avatar de Le Barde
    Homme Profil pro
    Chanteur
    Inscrit en
    Juillet 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chanteur

    Informations forums :
    Inscription : Juillet 2007
    Messages : 343
    Par défaut
    Damned !

    C'était ça le truc, en effet. Laurent, tu m'as sauvé
    L'enseignant qui nous a formé dans mon école noue a appris le C++ en mettant des en-têtes en .h, alors forcément, moi, je ne me pose pas de questions ! Maintenant c'est bien g++ qui est utilisé, merci beaucoup. Et string, ça marche enfin

    Merci à tous pour votre aide.

    Le Barde.

  18. #18
    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
    Les en-têtes C++ peuvent tout à fait avoir .h comme extension, ici le problème c'est surtout que tu as deux lignes interverties :
    SOURCES += Entrees-Sorties/Console.h
    HEADERS += Entrees-Sorties/Console.cpp
    Le .h devrait être dans HEADERS et le .cpp dans SOURCES

  19. #19
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    En fait, sous windows, g++ accepte de compiler les fichiers d'implémentation s'ils ont l'extension .c ou l'extension .cpp (gcc aussi, d'ailleurs, mais à condition que ce soit du code C ), mais refuse de compiler les fichiers d'implémentation ayant une autre extension.

    Par contre, au niveau des fichiers d'entete, et des inclusions, si les extensions classiques sont .hpp, .h, .hh et .hxx, cela ne pose aucun problème d'utiliser une extension tout autre, voir, comme c'est le cas pour les fichiers d'entete de la SL, carrément sans extension.

    Lorsque tu lances la commande qmake, il va te créer
    • Makefile
    • Makefile.Debug
    • Makefile.Release

    (ou du moins, c'est ce qu'il fait sous windows)...

    Dans Makefile.Debug et Makefile.Release, tu devrais trouver deux variables (CC et CXX) qui correspondent au compilateur utilisé:
    CC pour le compilateur C
    CXX pour le compilateur C++ ainsi que des options implicites sous la forme de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    .SUFFIXES: .cpp .cc .cxx .c
     
    .cpp.o:
    	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
     
    .cc.o:
    	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
     
    .cxx.o:
    	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
     
    .c.o:
    	$(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<
    ce qui signifie, en gros, qu'il faut utiliser le compilateur indiqué pour compiler le C++ avec les extensions .cpp, .cc et .cxx et le compilateur indiqué pour compiler le C avec les extensions .c

    Si donc il semble que tu utilises gcc au lieu de g++, il faut chercher l'erreur parmis l'une des deux solutions suivantes:

    la variable QMAKE_CXX qui soit définie non pas sur g++, ainsi qu'elle devrait *idéalement* l'etre, mais bien sur gcc...
    L'extension d'au moins un des fichiers d'implémentation est en .c au lieu d'etre en .cpp

    Tu devrais facilement pouvoir trouver la cause, et donc la solution
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  20. #20
    Membre éclairé
    Avatar de Le Barde
    Homme Profil pro
    Chanteur
    Inscrit en
    Juillet 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chanteur

    Informations forums :
    Inscription : Juillet 2007
    Messages : 343
    Par défaut
    Merci à vous.
    En fait j'ai regardé dans le makefile, tout est propre, et les variables sont bien définies comme elles le doivent. Merci Koala01, j'ai appris pas mal de choses sur les makefiles
    En ce qui concerne ma distribution / générateur de makefiles, je n'ai pas de Makefile.debug ni de Makefile.release, tout a l'air d'être inclus dans le makefile.

    Je crois que l'erreur venait de ce que j'avais bêtement mis dans HEADERS un .cpp et dans SOURCES un .h

    Merci encore à vous, j'ai appris pas mal de choses ! Les erreurs, c'est formateur !

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

Discussions similaires

  1. [Débutant] La conversion du type 'DBNull' en type 'String' n'est pas valide-VB .NET
    Par Aiman.elmachi dans le forum VB.NET
    Réponses: 2
    Dernier message: 10/06/2014, 14h55
  2. Réponses: 9
    Dernier message: 17/06/2013, 16h21
  3. Réponses: 2
    Dernier message: 14/02/2011, 12h24
  4. Erreur de conversion de type Null en String
    Par navis84 dans le forum Bases de données
    Réponses: 3
    Dernier message: 26/07/2005, 15h25
  5. Réponses: 2
    Dernier message: 05/06/2002, 12h29

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