Class String de la STL

Class String de la STL - C++ - Programmation

Marsh Posté le 03-05-2004 à 13:56:01    

Je suis debutant,
 
j'ai lu qu'il fallait pas utiliser char* en c++.
On m'a conseillé d'utiliser la class String de la STL.
 
Est ce un bon conseille ? Je dois utiliser quel #include pour que ca marche??
 
Merci

Reply

Marsh Posté le 03-05-2004 à 13:56:01   

Reply

Marsh Posté le 03-05-2004 à 14:12:48    

#include<string>
 
using namespace std;
 
string maChaine("Hello" );
 
http://www.sgi.com/tech/stl/basic_string.html


Message édité par xterminhate le 03-05-2004 à 14:30:49

---------------
Cordialement, Xterm-in'Hate...
Reply

Marsh Posté le 03-05-2004 à 14:38:32    

Code :
  1. #include <ostream.h>
  2.   #include <winsock.h>
  3.   #include <stdio.h>
  4.   #include "Mail.h"
  5.  
  6.   // Constructeur  
  7.   Mail::Mail(char* destinataire,char* expediteur,char* objet,char* message)
  8.   {
  9.      _destinataire=destinataire;
  10.      _expediteur=expediteur;
  11.      _objet=objet;
  12.      _message=message;
  13.   }
  14.  
  15.   // Destinataire  
  16.   char*
  17.   Mail::Destinataire()
  18.   {
  19.      return _destinataire;
  20.   }
  21.   /////////////////////////////////////  
  22.  
  23.    // Expediteur  
  24.   char*
  25.   Mail::expediteur()
  26.   {
  27.      return _expediteur;
  28.   }
  29.   /////////////////////////////////////  
  30.  
  31.    // Objet du message  
  32.   char*
  33.   Mail::objet()
  34.   {
  35.      return _objet;
  36.   }
  37.  
  38.   /////////////////////////////////////  
  39.  
  40.    // message  
  41.   char*
  42.   Mail::message()
  43.   {
  44.      return _message;
  45.   }


 
J'ai un code comme ca qui fonctionne.
 
Comment modifier ce code pour ne pas utiliser de Char* et pour que ca marche ???
J'arrive pas avec String!!!!!!!!!!!

Reply

Marsh Posté le 03-05-2004 à 14:39:17    

non, ce code ne fonctionne pas mais alors pas du tout

Reply

Marsh Posté le 03-05-2004 à 14:42:47    

j'avais oublié : oh du C

Reply

Marsh Posté le 03-05-2004 à 14:50:46    

Ah si ce code fonctionne

Reply

Marsh Posté le 03-05-2004 à 14:51:10    

enfin avec le reste

Reply

Marsh Posté le 03-05-2004 à 14:51:32    

ca c'est juste le .h de la classe

Reply

Marsh Posté le 03-05-2004 à 14:52:56    

oui il compile, oui il tourne mais sinon il est complètement dangereux
 
en c++ on utilise les string, non pas parce que cai plus c++, mais surtout pour éviter aux débutants comme toi de faire absolument n'importe quoi avec les char * comme ici

Reply

Marsh Posté le 03-05-2004 à 14:54:15    

continue ton explication

Reply

Marsh Posté le 03-05-2004 à 14:54:15   

Reply

Marsh Posté le 03-05-2004 à 14:57:47    

comment fo faire ?????????????????????????????????

Reply

Marsh Posté le 03-05-2004 à 14:58:16    

Code :
  1. #include <string>
  2. using std::string;
  3. class Mail
  4. {
  5.   string destinataire;
  6. public:
  7.   Mail(const string &dest)
  8.     : destinataire(dest)
  9.   {
  10.     // NOOP
  11.   }
  12.   const string & Destinaire() const
  13.   {
  14.     return destinaire;
  15.   }
  16.   // ou bien on retourne une copie defensive
  17.   string  Destinaire() const
  18.   {
  19.     return destinaire;
  20.   }
  21.   // et si a se trouve t'as des accesseurs uniquement
  22.   // parce que tu n'a pas compris la constness
  23.   // ou d'autres histoires
  24. };

Reply

Marsh Posté le 03-05-2004 à 15:07:02    

effectivement, je comprend plus grand chose. lol  
Mais au moins je vais progresser !!!

Reply

Marsh Posté le 03-05-2004 à 15:09:23    

le constructeur s'etait bon alors ?????

Reply

Marsh Posté le 03-05-2004 à 15:09:57    

enfin sans les char*

Reply

Marsh Posté le 03-05-2004 à 21:20:04    

Passer des char* en parametre sans jamais passer de longueur, c'est un peu comme faire de la voltige sans filet. Au premier oubli d''\0' terminal (et non "\0", comme j'ai fait récemment ici-même), crac, la sanction est immédiate et définitive.
Visiblement, tu aimes le risque.
 
Heureusement, Mr C++ a inventé le string (pas de mauvaise plaisanterie, SVP). Avec la classe string, tu passes les chaines en paramètres sans avoir à gérer leurs longueurs, et ce sans aucun risque d'écrasement mémoire, et en plus, cette classe a le bon goût de venir avec tout un tas de méthodes bien pratiques pour le traitement des chaines de caractères.
Donc oui, il faut utiliser les string.
 
Si tu ne comprends pas le code de Taz, c'est qu'il est temps de prendre un bon bouquin de C++ et de le potasser (voir Biblio links C++).

Reply

Marsh Posté le 04-05-2004 à 12:16:48    

Si j'utilise mon code en remplacant tous les char* par des String, c'est correct ???

Reply

Marsh Posté le 04-05-2004 à 12:30:18    

Oui, mais pour plus de détail, applique exactement les recettes données dans l'exemple de taz.


---------------
Cordialement, Xterm-in'Hate...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed