Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4253 connectés 

 


Dernière réponse
Sujet : [c++] string : undeclared identifier
ayachi

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.


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
ayachi

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.

LeGreg

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 :D faudrait pas que les gens croient des choses)
 
LEGREG

belgarion 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 ?
ayachi 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
LeGreg

Belgarion a écrit a écrit :

 
j ai inclu que iostream.h et string.h




 
pourquoi je pose la question..
 
LEGREG

LeGreg 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
ayachi 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
ayachi

legreg a écrit a écrit :

Citation :

operator<<
template<class E, class T, class A>
    basic_ostream<E, T>& operator<<(
        basic_ostream <E, T>& os,
        const basic_string<E, T, A>& str);
The template function overloads operator<< to insert an object str of template class basic_string into the stream os The function effectively returns os.write( str.c_str(), str.size()).


 
mais t'as essayé de la faire marcher ? moi jamais, sous visual ou sous builder
 
Pourquoi vous dites que ca ne marche pas??
 

Code :
  1. #pragma warning(disable:4786)
  2. #include <string>
  3. #include <iostream>
  4. using namespace std ;
  5. void main()
  6. {
  7.     string msg="Hello!  This is the insertion operator.";
  8.     cout << msg << endl;
  9. }


 
LEGREG  



ayachi

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 :)

LeGreg

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

LeGreg

Citation :

operator<<
template<class E, class T, class A>
    basic_ostream<E, T>& operator<<(
        basic_ostream <E, T>& os,
        const basic_string<E, T, A>& str);
The template function overloads operator<< to insert an object str of template class basic_string into the stream os The function effectively returns os.write( str.c_str(), str.size()).


 
Pourquoi vous dites que ca ne marche pas??
 

Code :
  1. #pragma warning(disable:4786)
  2. #include <string>
  3. #include <iostream>
  4. using namespace std ;
  5. void main()
  6. {
  7.     string msg="Hello!  This is the insertion operator.";
  8.     cout << msg << endl;
  9. }


 
LEGREG

ayachi yes
belgarion 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 ?
ayachi

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:

Citation :


operator<<(basic_ostream <charT, traits>& os,  
           const<charT, traits allocator> str);

 




 
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

antp Pourtant que je regarde l'aide fournie avec C++Builder pour la STL il y a un truc qui y ressemble:

Citation :


operator<<(basic_ostream <charT, traits>& os,  
           const<charT, traits allocator> str);

ayachi

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]

antp 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]

belgarion 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)
antp 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)
belgarion c quo la stl ?
 
moi je programme sous visual c++ 6
mais je veux un truc portable sous linux
antp 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)
belgarion 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

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)