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.
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.
C'est dans la FAQ.
http://c.developpez.com/faq/cpp
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Bien sûr.Je voudrais convertir un nombre double en chaîne de caractères... C'est faisable ?
Normal, tu dis à C++ de considérer que ta variable est en fait un pointeur vers un char.Je n'ai pas trop vu dans les cours de C++, et le (char*)MaVariableDouble ne fontionne pas...
Regarde la FAQ, il devrait y avoir une entrée sur les conversions textuelles avec les stringstreams.
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 :
gcc me renvoie :
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
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.)
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++$
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)
Mon blog anglais - Mes articles et critiques de livres - FAQ C++0x, avec liste des nouveautés - Conseils sur le C++ - La meilleure FAQ du monde - Avant de créer des classes que vous réutiliserez, regardez si ça n'existe pas déjà - Le site du comité de normalisation du C++
Le guide pour bien débuter en C++ - Cours et tutoriels pour apprendre C++
Ca devrait être g++ et Console.cpp, non ?gcc ... Console.h
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
J'ai regardé, j'ai regardé mon problème, ce n'est plus ça, c'est de trouver à inclure le fichier <string>Envoyé par Alp
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.Envoyé par Alp
Oui c'était ça ma question, parce que j'ai également <iostream> itou itouSinon, vérifie ton installation de la bibliothèque standard.
J'avoue, je suis en train de coder et j'utilise les deux méthodes pour quelques essais comparatifs.Pourquoi 2 méthodes Afficher? (ces deux méthodes devraient être une seule)
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 ?
Mon blog anglais - Mes articles et critiques de livres - FAQ C++0x, avec liste des nouveautés - Conseils sur le C++ - La meilleure FAQ du monde - Avant de créer des classes que vous réutiliserez, regardez si ça n'existe pas déjà - Le site du comité de normalisation du C++
Le guide pour bien débuter en C++ - Cours et tutoriels pour apprendre C++
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.
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
compile et s'exécute correctement
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; }(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
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++...
Mais faut pa compiler avec gcc... Le compilo C++ c'est g++.
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
lol oui, je venais de m'en rendre compte...
J'utilise qmake, quelqu'un sait quelle est l'option à mettre dans le fichier de projet pour spécifier l'utilisation de g++ ?
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.
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Tu me mets un gros doute, Laurent...
Voici le fichier Projet.pro :
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.
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
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 ?
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.
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 :
Le .h devrait être dans HEADERS et le .cpp dans SOURCESSOURCES += Entrees-Sorties/Console.h
HEADERS += Entrees-Sorties/Console.cpp![]()
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
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
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
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 $@ $<
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
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 !
Partager