getline, problème de template ??

getline, problème de template ?? - C++ - Programmation

Marsh Posté le 24-01-2004 à 17:34:37    

lu
 
lorsque je compile ceci j'obtiens une erreur :
 

Code :
  1. #include <string>
  2. #include <fstream>
  3. using namespace std;
  4. Lieux::Lieux (ifstream & flux)
  5. {
  6.     string ligne;
  7.    
  8.     getline (flux, ligne);
  9. }


 
le compilateur (c++ builder 6) me dit qu'il ne trouve pas de correspondance ... : Impossible de trouver une correspondance pour 'getline<_CharT,_Traits,_Alloc>(ifstream,string)'
 
mais si je fais  
 

Code :
  1. #include <string>
  2. #include <fstream>
  3. using namespace std;
  4. Lieux::Lieux (ifstream & flux)
  5. {
  6.     string ligne;
  7.     ifstream in ("data" );
  8.    
  9.     getline (in, ligne);
  10. }


 
la sa fonctionne. y aurai pas un problème d'instanciation quelque par la ?

Reply

Marsh Posté le 24-01-2004 à 17:34:37   

Reply

Marsh Posté le 24-01-2004 à 20:19:13    

techniquement y a pas de problème
 
essaie ça pour voir
 Lieux::Lieux (ifstream & flux)
  {
        string ligne;
        ifstream &in = flux;
         
        getline (in, ligne);
  }

Reply

Marsh Posté le 24-01-2004 à 20:26:19    

ifstream &in = flux;
ca fait quoi ca ?

Reply

Marsh Posté le 24-01-2004 à 20:28:51    

ne fonctionne pas non plus :??: (même erreur)


Message édité par sanglier04 le 24-01-2004 à 20:29:33
Reply

Marsh Posté le 24-01-2004 à 20:33:22    

ben dtc, change de compilateur :o
 
skelter > tu sais pas ce que c'est qu'une référence ?

Reply

Marsh Posté le 24-01-2004 à 20:37:06    

si mais ca ve dire que l'adresse de in sera celle de flux?

Reply

Marsh Posté le 24-01-2004 à 20:40:11    

skelter a écrit :

si mais ca ve dire que l'adresse de in sera celle de flux?

pourquoi, t'as déjà vu des références avec lesquelles il en était autrement ?

Reply

Marsh Posté le 24-01-2004 à 20:43:40    

non mais j'ai jamais vu ca &in = flux; et j'avais pas percutter qu'on pouvait faire ca

Reply

Marsh Posté le 24-01-2004 à 20:45:10    

eux autant dire qu'en fait il est plus sémantiquement correct d'utiliser le parenthésage
 
 
ifstream &in(...)
 

Reply

Marsh Posté le 24-01-2004 à 20:46:12    

taz a écrit :

ben dtc, change de compilateur :o
 
skelter > tu sais pas ce que c'est qu'une référence ?


 
:(  
 
merci kan meme :hello:

Reply

Marsh Posté le 24-01-2004 à 20:46:12   

Reply

Marsh Posté le 24-01-2004 à 20:50:38    

essaie avec istream comme type et non pas ifstream

Reply

Marsh Posté le 24-01-2004 à 21:21:17    

ca marche !
 
mais j'avou que j'ai un peu de mal a comprendre pourquoi :??: ifstream de fonctionne pas alors.
 
dans l'aide la déclaration est ainsi :
 

Code :
  1. template <class Stream, class charT, class traits, class Allocator>
  2. basic_istream<charT, traits>& getline (Stream&, basic_string&, charT);


 

Reply

Marsh Posté le 24-01-2004 à 21:28:14    

ta STL est foireuse
 
le prototype doit être plus sérieusement du genre
 
 

Code :
  1. template<typename _CharT, typename _Traits, typename _Alloc>
  2. basic_istream<_CharT, _Traits>&
  3. getline(basic_istream<_CharT, _Traits>& __in,
  4.         basic_string<_CharT, _Traits, _Alloc>& __str,
  5.         _CharT __delim)

est nettement plus correct comme déclaration

Reply

Sujets relatifs:

Leave a Replay

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