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

  FORUM HardWare.fr
  Programmation

  [c++] string : undeclared identifier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[c++] string : undeclared identifier

n°119142
belgarion
Emporté par le Nexus
Posté le 29-03-2002 à 18:14:46  profilanswer
 

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

mood
Publicité
Posté le 29-03-2002 à 18:14:46  profilanswer
 

n°119145
antp
Super Administrateur
Champion des excuses bidons
Posté le 29-03-2002 à 18:23:54  profilanswer
 

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)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°119147
belgarion
Emporté par le Nexus
Posté le 29-03-2002 à 18:38:01  profilanswer
 

c quo la stl ?
 
moi je programme sous visual c++ 6
mais je veux un truc portable sous linux

n°119148
antp
Super Administrateur
Champion des excuses bidons
Posté le 29-03-2002 à 18:40:57  profilanswer
 

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)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°119149
belgarion
Emporté par le Nexus
Posté le 29-03-2002 à 18:41:59  profilanswer
 

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)

n°119163
antp
Super Administrateur
Champion des excuses bidons
Posté le 29-03-2002 à 19:03:20  profilanswer
 

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]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°119168
ayachi
Posté le 29-03-2002 à 19:43:13  profilanswer
 

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]

n°119179
antp
Super Administrateur
Champion des excuses bidons
Posté le 29-03-2002 à 20:18:46  profilanswer
 

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


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°119188
ayachi
Posté le 29-03-2002 à 20:48:14  profilanswer
 

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

n°119222
belgarion
Emporté par le Nexus
Posté le 29-03-2002 à 23:18:54  profilanswer
 

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 ?

mood
Publicité
Posté le 29-03-2002 à 23:18:54  profilanswer
 

n°119261
ayachi
Posté le 30-03-2002 à 00:14:47  profilanswer
 

yes

n°119298
LeGreg
Posté le 30-03-2002 à 11:05:54  profilanswer
 

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

n°119300
LeGreg
Posté le 30-03-2002 à 11:07:26  profilanswer
 

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

n°119320
ayachi
Posté le 30-03-2002 à 12:43:31  profilanswer
 

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

n°119321
ayachi
Posté le 30-03-2002 à 12:45:49  profilanswer
 

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  



n°119333
ayachi
Posté le 30-03-2002 à 13:20:29  profilanswer
 

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

n°119357
LeGreg
Posté le 30-03-2002 à 14:50:38  profilanswer
 

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

n°119358
LeGreg
Posté le 30-03-2002 à 14:51:13  profilanswer
 

Belgarion a écrit a écrit :

 
j ai inclu que iostream.h et string.h




 
pourquoi je pose la question..
 
LEGREG

n°119371
ayachi
Posté le 30-03-2002 à 16:02:47  profilanswer
 

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

n°119411
belgarion
Emporté par le Nexus
Posté le 30-03-2002 à 19:48:42  profilanswer
 

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 ?

n°119459
LeGreg
Posté le 31-03-2002 à 00:40:34  profilanswer
 

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

n°119479
ayachi
Posté le 31-03-2002 à 04:30:17  profilanswer
 

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.

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [c++] string : undeclared identifier

 

Sujets relatifs
LOANNA en string en 3D haute définition skinné....[Delphi] GetTTreeNodeWhichHaveThisData( id:string);
[PHP] String commence par "A"'tain c pourit freepascal on peut pas mettre de string dans un case of
[C++ Builder] Les != types de chaînes (string, AnsiString, char, etc..[Java] mettre le contenu d'un fichier txt dans une String
[ C ] manip sur une String marche sous linux et pas sous windows[JAVA] débutant String
Int -> String en Java[C++] Chercher un string dans un fichier
Plus de sujets relatifs à : [c++] string : undeclared identifier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR