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

  FORUM HardWare.fr
  Programmation
  C++

  des ptites questions sur la STL et sur string

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

des ptites questions sur la STL et sur string

n°269308
Jam Kurado​beri
Guilty Gear X , uniquement !
Posté le 13-12-2002 à 19:08:07  profilanswer
 

hop deja premeire question ej comprends pas a koi sert <iostream> et "using namespace std;"
 
jai fait un ptit programme du type :
 

Code :
  1. #include <iostream.h>
  2. #include <string>
  3. void main() {
  4.   string s;
  5.   s = "coucou le monde";
  6.   cout << s;
  7. }


 
et ca marche tres bien
 
si vous pouviez me dire ce k'apporte exactement <iostream> par rapport a <iostream.h>, et a koi sert "using namespace std;" ?
 
2eme question maintenant:
 
y'a t'il moyen de construitre un objet string a partir d'un tableau de char (en fait je lis d'un fichier et j'aimerais mettre les lignes dans des string), ou alors y'a t'il moyen de lire les ligens d'un fichier directemetn dans une string ?
 
merci  :jap:

mood
Publicité
Posté le 13-12-2002 à 19:08:07  profilanswer
 

n°269317
LeGreg
Posté le 13-12-2002 à 19:51:31  profilanswer
 

iostream fait partie du standard pas iostream.h
 
En particulier le comportement pour ce dernier
dependra de ton compilateur.
 
Sous visual C++ 6 si tu melanges
iostream.h avec string
alors tu ne peux pas ecrire  
cout << string("toto" );
 
Conclusion:  
si tu veux utiliser le standard C++ le plus recent, tu compiles avec iostream.
 
iostream.h n'a du sens que si tu as des sources qui datent et qui n'ont pas encore inclu le changement.
(parce qu'il y a eu plusieurs versions de la STL)
 
Maintenant a quoi servent les namespaces?
je pense que bien utilises ils peuvent aider le programmeur.
 
Tu peux choisir tous les noms que tu veux pour tes classes ou pour tes fonctions, il y a moins de risques que ce nom existe deja (meme si le risque n'est pas exclu mais par exemple ca risque de poser moins de problemes a l'edition des liens lorsque deux fonctions ont le meme prototype).  
 
tu as un namespace ig dans lequel sont redefinies quelques fonctions standards comme le malloc,
tu peux toujours l'appeler malloc parce que ig::malloc
ne collisionnera pas avec std::malloc
(c'est un exemple).
 
A+
LeGreg


---------------
voxel terrain render engine | animation mentor
n°269323
LeGreg
Posté le 13-12-2002 à 20:01:34  profilanswer
 

Citation :

2eme question maintenant:
 
y'a t'il moyen de construitre un objet string a partir d'un tableau de char (en fait je lis d'un fichier et j'aimerais mettre les lignes dans des string), ou alors y'a t'il moyen de lire les ligens d'un fichier directemetn dans une string ?


 
c'est l'un des problemes que je rencontre parfois dans mon code.
Les litterals (inclus dans le segment data) n'existent que pour les tableaux de char. Ce qui fait qu'a chaque occurrence de la constante sous forme de string, il y a un surcout lie a la construction (a moins de le declarer static mais le surcout existe tout de meme a la creation de l'application ou lors du premier appel).
Ce serait bien d'avoir un stringwrapper, qui soit constructible dans le segment data et donc d'eviter d'avoir a dupliquer tout ca.. Pour ca les char * ont l'avantage. En pratique ce probleme est tres leger. Il faut juste faire attention a ne pas trop construire de constantes chaines sur la pile :(.
 
Pour ce qui est de ta question : Il y a un constructeur par defaut qui accepte un const char*
tu fais

Code :
  1. string machaine("contenu de ma chaine" );


tu peux aussi affecter un contenu apres coup:

Code :
  1. machaine = "un autre contenu";


 
pour lire depuis l'entree standard (avec iostream et pas iostream.h!!)

Code :
  1. getline(cin, machaine);


 
A+
LeGreg


---------------
voxel terrain render engine | animation mentor
n°269324
Jam Kurado​beri
Guilty Gear X , uniquement !
Posté le 13-12-2002 à 20:03:29  profilanswer
 

ok emrci pour le coup de lire directeent dans un string plutot que dans un char * !

n°269353
Jam Kurado​beri
Guilty Gear X , uniquement !
Posté le 13-12-2002 à 21:26:25  profilanswer
 

bon je peux pas tester par manque de compilateur chez moi, mais est-ce que ceci pourrait marcher :

Code :
  1. #include <iostream.h>
  2. #include <fstream.h>
  3. #include <string>
  4. ifstream xml;
  5. xml.open("tennis.xml" );
  6. char buffer[256];
  7. string buf;
  8. xml.getline(buffer,256);
  9. buf = buffer; // <----- c'est a ce niveau la que j'ai un doute !

n°269428
LeGreg
Posté le 13-12-2002 à 23:08:01  profilanswer
 

Code :
  1. getline(xml, buf);


plutot.
Pas besoin de passer par un buffer intermediaire.
 
LeGreg


---------------
voxel terrain render engine | animation mentor
n°269432
LeGreg
Posté le 13-12-2002 à 23:09:12  profilanswer
 

et encore une fois
 
<iostream> et non pas <iostream.h>
 
LeGreg


---------------
voxel terrain render engine | animation mentor
n°269442
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 13-12-2002 à 23:12:50  profilanswer
 

legreg a écrit :

et encore une fois
 
<iostream> et non pas <iostream.h>
 
LeGreg

pareil pour <fstream.h>


Message édité par Taz@PPC le 13-12-2002 à 23:13:38

---------------
du bon usage de rand [C] / [C++]
n°269519
Jam Kurado​beri
Guilty Gear X , uniquement !
Posté le 14-12-2002 à 02:22:21  profilanswer
 

euh oui mais je tiens a utiliser les iostream.h et fstream.h, le code etant fait pour l'IUT on a certaines obligations
 
voila donc je voudrais savoir si le code donné plus haut marcherait sans modification par vous  :)  
 
sinon oui pour moi je me servirais de iostream et fstream

n°269542
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 14-12-2002 à 07:36:34  profilanswer
 

Jam Kuradoberi a écrit :

euh oui mais je tiens a utiliser les iostream.h et fstream.h, le code etant fait pour l'IUT on a certaines obligations
 
voila donc je voudrais savoir si le code donné plus haut marcherait sans modification par vous  :)  
 
sinon oui pour moi je me servirais de iostream et fstream

ben normalement les versions sans .h et avec std:: doivent marcher quand meme, amoins que ton compilo ait 10ans


---------------
du bon usage de rand [C] / [C++]

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

  des ptites questions sur la STL et sur string

 

Sujets relatifs
Plusieurs petites questions et demande de fonction sur Delphi[ C++ ] Pleins de questions pour un débutant...
Vitesse d'execution de code STL sous VisualC++ !?!?Librairies statiques, sousprojets et STL
mettre un fichier dans un stringString To Char Help
Questions sur les Dates PHP ( - assez urgent - )Pb d'"allocation mémoire avec STL string
Comment convertir un long en String ?? 
Plus de sujets relatifs à : des ptites questions sur la STL et sur string


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