string : undeclared identifier [c++] - Programmation
Marsh Posté le 29-03-2002 à 18:23:54
Comment ça les string ?
Si c'est les string de la STL que tu veux utiliser, tu dois faire:
#include <string>
Et enventuellement mettre juste après (la ligne d'après):
using namespace std;
(je crois - j'utilise en général les AnsiString de Borland moi)
Marsh Posté le 29-03-2002 à 18:38:01
c quo la stl ?
moi je programme sous visual c++ 6
mais je veux un truc portable sous linux
Marsh Posté le 29-03-2002 à 18:40:57
Bhen alors il y a des chances que ce soit les string de la STL : Standard Template Library.
Un ensemble de classes multi plate-forme.
Et comme tu es sous Visual C++ tu dois mettre le using namespace std (je crois que c'était ça)
Marsh Posté le 29-03-2002 à 18:41:59
oki ca marche
mais c normal que le string passe pas dans le cout ?
si je fais
std::string test;
test = "cool";
cout << test;
ca marche pas
F:\REMY\sauvegarde\fichier vc++\combat\Combat.cpp(68) : error C2679: binary '<<' : no operator defined which takes a right-hand operand of type 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' (or there is no acceptable conversion)
Marsh Posté le 29-03-2002 à 19:03:20
Pas normal ça...
Ça devrait marcher...
Pourquoi tu déclares std::string test ? Si tu mets juste string test ça devrait marcher...
Sinon essaie de modifier ton titre en "[C++] STL & string", ça attirera peut-être plus de monde. Moi j'ai pas beaucoup employé ces string.
[jfdsdjhfuetppo]--Message édité par antp--[/jfdsdjhfuetppo]
Marsh Posté le 29-03-2002 à 19:43:13
Belgarion a écrit a écrit : oki ca marche mais c normal que le string passe pas dans le cout ? si je fais std::string test; test = "cool"; cout << test; ca marche pas F:\REMY\sauvegarde\fichier vc++\combat\Combat.cpp(68) : error C2679: binary '<<' : no operator defined which takes a right-hand operand of type 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' (or there is no acceptable conversion) |
non l'operateur << n'est pas surchargé pour les string de la stl
tu dois faire : cout << chaine.c_str() où chaine est de type string
[jfdsdjhfuetppo]--Message édité par ayachi--[/jfdsdjhfuetppo]
Marsh Posté le 29-03-2002 à 20:18:46
Pourtant que je regarde l'aide fournie avec C++Builder pour la STL il y a un truc qui y ressemble:
Citation : |
Marsh Posté le 29-03-2002 à 20:48:14
antp a écrit a écrit : Pourtant que je regarde l'aide fournie avec C++Builder pour la STL il y a un truc qui y ressemble:
|
t'as vu c'est un template basic_ostream pas string, les traits sont des propriétés associés au caractère, genre taille caractère
string::c_str() retourne le tableau de caractère associé à la chaine
Marsh Posté le 29-03-2002 à 23:18:54
desole mais je croyais que vc++ etait installer sur le pc de mes parent et apparemment je l ai virer
donc je peux pas tester pour l instant
en gros dans mon cas faudrait que je fasse quoi ?
cout << test.c_str()
j ai bien compris ?
Marsh Posté le 30-03-2002 à 11:05:54
Citation : operator<< |
Pourquoi vous dites que ca ne marche pas??
Code :
|
LEGREG
Marsh Posté le 30-03-2002 à 11:07:26
ayachi a écrit a écrit : t'as vu c'est un template basic_ostream pas string |
le basic_ostream est le premier argument de l'operateur << !!
c'est a dire celui qui est a sa gauche puisque c'est un operateur binaire.
LEGREG
Marsh Posté le 30-03-2002 à 12:43:31
legreg a écrit a écrit : le basic_ostream est le premier argument de l'operateur << !! c'est a dire celui qui est a sa gauche puisque c'est un operateur binaire. LEGREG |
suis-je bête
Marsh Posté le 30-03-2002 à 12:45:49
legreg a écrit a écrit :
|
Marsh Posté le 30-03-2002 à 13:20:29
j'en reviens pas ça marche !!!
et j'ai bossé pendant 2 ans sur des projets C++, et je me rappelles m'être vraiment galéré pour trouver la solution c'était pour le boulot, ce code j'ai essayé et jamais j'ai pu le compiler.
j'ai visual c++6 sp5, pe que c'est une mise à jour de la stl
avec le sp5 ou autre.
Belgarion essaies le code de legreg et vois si ça compiles, si non quel service pack tu as
Marsh Posté le 30-03-2002 à 14:50:38
ca n'a rien a voir avec un service pack ou autre
l'operateur << sur les string est valide depuis l'existence
de std::iostream. (tu peux trouver la doc
chez Dinkumware ou SGI si tu ne fais pas confiance
a Microsoft)
Juste une question: tu n'essaierais pas d'inclure
<iostream.h> et <string.h> a tout hasard?
(ce qui a toutes les chances de ne pas marcher..
et qui me parait meme une erreur grossiere)
LEGREG
Marsh Posté le 30-03-2002 à 14:51:13
Belgarion a écrit a écrit : j ai inclu que iostream.h et string.h |
pourquoi je pose la question..
LEGREG
Marsh Posté le 30-03-2002 à 16:02:47
ouais t'as surement raison , j'ai du essayer et comme avec c_str() ça marchait je me suis plus jamais posé la question.
mais en tout cas effectivement ça marche, iostream.h jamais je n'ai du inclure ça mais pas sur pour string.h, à l'époque je connaissais pas trop la stl
Marsh Posté le 30-03-2002 à 19:48:42
en faite faur pas inclure iostream.h et string.h mais iostream et string ?
c pas les meme fichier en gros
au cas ou vous ayez pas compris je debutte en programmation
j ai pas de sp sous visual apparemment ca se recup ou ?
Marsh Posté le 31-03-2002 à 00:40:34
belgarion a écrit a écrit : en faite faur pas inclure iostream.h et string.h mais iostream et string ? |
en gros tu fais comme dans mon programme d'exemple
(enfin plus exactement celui de Microsoft faudrait pas que les gens croient des choses)
LEGREG
Marsh Posté le 31-03-2002 à 04:30:17
belgarion a écrit a écrit : en faite faur pas inclure iostream.h et string.h mais iostream et string ? c pas les meme fichier en gros au cas ou vous ayez pas compris je debutte en programmation j ai pas de sp sous visual apparemment ca se recup ou ? |
Les fichiers include de la stl ne sont pas en.h, ils contiennent aussi le code des templates.
Marsh Posté le 29-03-2002 à 18:14:46
bon voila mon prob
j ai fait des prog en c ca marchait nickel
mais la je me suis mis au c++ et j ai un prob : il trouve pas les string : undeclared identifier
j ai inclu que iostream.h et string.h
y a un autre truc a faire car la j avoue je pige pas