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)
Publicité
Posté le 03-10-2003 à 22:47:26
Riot
Buy me a riot
Posté le 03-10-2003 à 23:12:35
pourquoi pas un getline???
Taz
bisounours-codeur
Posté le 03-10-2003 à 23:20:44
peut etre que tu n'aurais jamais rien compris à eof ? fais une recherche.
si c'est pour sortir la version fonction membre avec un char*, très peu pour moi
antsite
Je me souviens
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
Taz
bisounours-codeur
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.
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
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
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 ?
Taz
bisounours-codeur
Posté le 04-10-2003 à 11:00:45
même pas.
std::vector<char> buffer(s.begin(), s.end());
Joel F
Real men use unique_ptr
Posté le 04-10-2003 à 11:02:48
oui d'accord mais is le vector est deja construit ....
Taz
bisounours-codeur
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
skelter
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)
Taz
bisounours-codeur
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.
skelter
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é?