get zap des caracters [pb ifstream] - C++ - Programmation
Marsh Posté le 03-10-2003 à 23:20:44
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
Marsh Posté le 03-10-2003 à 23:21:33
Riot a écrit : pourquoi pas un getline??? |
si c'est pour sortir la version fonction membre avec un char*, très peu pour moi
Marsh Posté le 04-10-2003 à 09:44:25
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
Marsh Posté le 04-10-2003 à 10:07:22
impossible avec une string. à ce moment là, tu clones ta string dans un vector, et tu passes &v[0] en paramètre.
Marsh Posté le 04-10-2003 à 10:51:13
Taz a écrit : peut etre que tu n'aurais jamais rien compris à eof ? fais une recherche. |
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
Marsh Posté le 04-10-2003 à 10:57:13
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 ?
Marsh Posté le 04-10-2003 à 10:59:05
Joel F a écrit : |
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.
Marsh Posté le 04-10-2003 à 11:00:04
skelter a écrit : |
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
Marsh Posté le 04-10-2003 à 11:00:08
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 ?
Marsh Posté le 04-10-2003 à 11:05:16
ben tu clear() et après insert
ou bien, clear et copy+back_inserter
ou encore, resize + copy
Marsh Posté le 04-10-2003 à 17:12:11
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)
Marsh Posté le 04-10-2003 à 17:35:40
ç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.
Marsh Posté le 04-10-2003 à 18:07:27
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é?
Marsh Posté le 04-10-2003 à 18:16:30
ben ça dépend du mode, en binaire, c'est pas meme chose, etc
http://www.dinkumware.com/refxcpp.html
Marsh Posté le 03-10-2003 à 22:47:26
exemple :
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)