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

  FORUM HardWare.fr
  Programmation
  C++

  [pb ifstream] get zap des caracters

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[pb ifstream] get zap des caracters

n°530827
skelter
Posté le 03-10-2003 à 22:47:26  profilanswer
 

exemple :

Code :
  1. char c;
  2. ifstream fi;
  3.      
  4. ...
  5. while(!fi.eof())
  6. {
  7.    ...
  8.    fi.get(c);
  9. }


 
le pb c que fi.get(c) zapp qq caracters (tres peu), c un pb qui disparait si j'alterne avec fi>>c (mais c chian) ou si j'ouvre/ferme le fichier ds la boucle
comment g pe remedier a ca? yaurait pas une fonction pour nettoyer le tempon d'entrée ou un truc comme ca? (g dit ca au pif, j connai rien)

mood
Publicité
Posté le 03-10-2003 à 22:47:26  profilanswer
 

n°530837
Riot
Buy me a riot
Posté le 03-10-2003 à 23:12:35  profilanswer
 

pourquoi pas un getline???

n°530849
Taz
bisounours-codeur
Posté le 03-10-2003 à 23:20:44  profilanswer
 

peut etre que tu n'aurais jamais rien compris à eof ? fais une recherche.
 
while(cin >> c)
{ }
 
ou avec get
 
while((c=cin.get()) != EOF)
 
ou while(cin.get(c))
 
 
etc, etc, etc

n°530850
Taz
bisounours-codeur
Posté le 03-10-2003 à 23:21:33  profilanswer
 

Riot a écrit :

pourquoi pas un getline???

si c'est pour sortir la version fonction membre avec un char*, très peu pour moi

n°531018
antsite
Je me souviens
Posté le 04-10-2003 à 09:44:25  profilanswer
 

excusez-moi de polluer le topic, mais j'aimerais revenir sur l'emploi du char* en C++ :
parfois on est bien obligé de l'employer non ? par exemple avec une fonction de l'API windows qui demande un char* en argument pour écrire le résultat dedans, comment faire pour lui donner un objet string, via les méthodes data ou c_str ? j'ai pas réussi dans ce sens (remplir une string, mais y accéder ça va avec c_str), quelqu'un aurait un bout de code ? merci

n°531022
Taz
bisounours-codeur
Posté le 04-10-2003 à 10:07:22  profilanswer
 

impossible avec une string. à ce moment là, tu clones ta string dans un vector, et tu passes &v[0] en paramètre.

n°531041
skelter
Posté le 04-10-2003 à 10:51:13  profilanswer
 

Taz a écrit :

peut etre que tu n'aurais jamais rien compris à eof ? fais une recherche.
 
while(cin >> c)
{ }
 
ou avec get
 
while((c=cin.get()) != EOF)
 
ou while(cin.get(c))
 
 
etc, etc, etc
 


 
ya quoi a comprender sur eof?
 
sinon il fo que j'utilise get(c) (g essayer ce que tu propose, et c vraiment pas ca)
g repete qd il aspire les caracters yen a certain(genre 1 sur 100 au max) et pas les derniers qui passent aux oubliette, et si g parle d'une fonction qui evite ce pb c pq g croit qui yen a une qui le fait en C avec la stdio

n°531046
Joel F
Real men use unique_ptr
Posté le 04-10-2003 à 10:57:13  profilanswer
 

Taz a écrit :

impossible avec une string. à ce moment là, tu clones ta string dans un vector, et tu passes &v[0] en paramètre.


C'est pas un peu chelou tout çà quand même ?

n°531047
Taz
bisounours-codeur
Posté le 04-10-2003 à 10:59:05  profilanswer
 

Joel F a écrit :


C'est pas un peu chelou tout çà quand même ?

absolument pas, la spécification de vector assure la contiguité et que vector<T>::iterator est assimilable à un T*
 
 
pour eof, ben tu fais une recherche, ou tu lis la doc.

n°531053
Taz
bisounours-codeur
Posté le 04-10-2003 à 11:00:04  profilanswer
 

skelter a écrit :


 
ya quoi a comprender sur eof?
 
sinon il fo que j'utilise get(c) (g essayer ce que tu propose, et c vraiment pas ca)
g repete qd il aspire les caracters yen a certain(genre 1 sur 100 au max) et pas les derniers qui passent aux oubliette, et si g parle d'une fonction qui evite ce pb c pq g croit qui yen a une qui le fait en C avec la stdio

on capte rien à ce que tu veux. ce que j'ai montré marche très bien. si tu t'es mis à utiliser cstdio, c'est que t'es déjà dans le mur

mood
Publicité
Posté le 04-10-2003 à 11:00:04  profilanswer
 

n°531054
Joel F
Real men use unique_ptr
Posté le 04-10-2003 à 11:00:08  profilanswer
 

Taz a écrit :

absolument pas, la spécification de vector assure la contiguité et que vector<T>::iterator est assimilable à un T*


 
Donc faut faire un std::copy du string vers le vector et passer le begin() du vector ?

n°531055
Taz
bisounours-codeur
Posté le 04-10-2003 à 11:00:45  profilanswer
 

même pas.
 
std::vector<char> buffer(s.begin(), s.end());

n°531058
Joel F
Real men use unique_ptr
Posté le 04-10-2003 à 11:02:48  profilanswer
 

oui d'accord :p
mais is le vector est deja construit ....

n°531060
Taz
bisounours-codeur
Posté le 04-10-2003 à 11:05:16  profilanswer
 

ben tu clear() et après insert
ou bien, clear et copy+back_inserter
ou encore, resize + copy

n°531253
skelter
Posté le 04-10-2003 à 17:12:11  profilanswer
 

bon ba g trouver la solution a mon pb mais c bizar,
a un moment g fait fi.seekg(-1,ios::cur), g remplacer par fi.putback(c) et la ya plus de pb, en tout cas ce qui est sur c que si on utilise les methodes seekg, read, operateur >> avec les methodes get(char),get,putback,... sur le meme objet ca sali la lecture(pq c pas la premiere fois que ca m'arrive)

n°531268
Taz
bisounours-codeur
Posté le 04-10-2003 à 17:35:40  profilanswer
 

ça ne salit rien, seulement tu bricoles jusqu'a que ça marche sans te demander une seule fois pourquoi telle ou telle fonction membre a tel ou tel comportement et ce que cela implique.

n°531303
skelter
Posté le 04-10-2003 à 18:07:27  profilanswer
 

ok, la ta sans doute raison, mais c pa ma faute, g pas vraiment trouver de doc detailler la dessus
g trouver un site ou ils disent par ex que fi>>c et fi.get(c) c la meme chose or c faut car >> zap pas mal de caracter(les espaces,\n,...) alor que get(char) prend tout les caracter
==>t'aurai pas une adresse ou tout est expliqué?

n°531316
Taz
bisounours-codeur
Posté le 04-10-2003 à 18:16:30  profilanswer
 

ben ça dépend du mode, en binaire, c'est pas meme chose, etc  
http://www.dinkumware.com/refxcpp.html


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

  [pb ifstream] get zap des caracters

 

Sujets relatifs
[c++] problème avec ifstream et fonction getlineSTL: ifstream
[C++] délimiteur sous ifstream 
Plus de sujets relatifs à : [pb ifstream] get zap des caracters


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