merci, je vais regarder ce que fait readsome, que je ne connaissait pas
Jean-Marc Bourguet
Michael DOUBEZ writes:
je voudrais savoir si mon code est correct, où s'il existe une autre méthode file_ est un fstream size_t sizeP0; char* ptr=new char[size]; the_file.read(ptr,size);
Utilises gcount() pour connaitre le nombre d'octet effectivement lus ou utilises readsome()?
Pourquoi utiliser readsome dans ce contexte? Ca n'a pas tellement d'intérêt en dehors des stream que l'on sait interactive il me semble.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Michael DOUBEZ <michael.doubez@free.fr> writes:
je voudrais savoir si mon code est correct, où s'il existe une autre
méthode
file_ est un fstream
size_t sizeP0;
char* ptr=new char[size];
the_file.read(ptr,size);
Utilises gcount() pour connaitre le nombre d'octet effectivement lus ou
utilises readsome()?
Pourquoi utiliser readsome dans ce contexte? Ca n'a pas tellement
d'intérêt en dehors des stream que l'on sait interactive il me semble.
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
je voudrais savoir si mon code est correct, où s'il existe une autre méthode file_ est un fstream size_t sizeP0; char* ptr=new char[size]; the_file.read(ptr,size);
Utilises gcount() pour connaitre le nombre d'octet effectivement lus ou utilises readsome()?
Pourquoi utiliser readsome dans ce contexte? Ca n'a pas tellement d'intérêt en dehors des stream que l'on sait interactive il me semble.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Fabien LE LEZ
On Tue, 13 Nov 2007 13:13:00 +0100, "Marc G" :
char* ptr=new char[size];
std::vector<char> buf (size);
the_file.read(ptr,size);
read (&buf[0], buf.size());
On Tue, 13 Nov 2007 13:13:00 +0100, "Marc G" <mgueguen@metrica.fr>:
je voudrais savoir si mon code est correct, où s'il existe une autre méthode file_ est un fstream size_t sizeP0; char* ptr=new char[size]; the_file.read(ptr,size); Utilises gcount() pour connaitre le nombre d'octet effectivement lus ou
utilises readsome()?
Pourquoi utiliser readsome dans ce contexte? Ca n'a pas tellement d'intérêt en dehors des stream que l'on sait interactive il me semble.
Pour etre coherent avec une lecture en fin de fichier. Si il connait effectivement le nombre d'octets accessibles, il peut se contenter de savoir si le read a reussit ou non.
Michael
Michael DOUBEZ <michael.doubez@free.fr> writes:
je voudrais savoir si mon code est correct, où s'il existe une autre
méthode
file_ est un fstream
size_t sizeP0;
char* ptr=new char[size];
the_file.read(ptr,size);
Utilises gcount() pour connaitre le nombre d'octet effectivement lus ou
utilises readsome()?
Pourquoi utiliser readsome dans ce contexte? Ca n'a pas tellement
d'intérêt en dehors des stream que l'on sait interactive il me semble.
Pour etre coherent avec une lecture en fin de fichier.
Si il connait effectivement le nombre d'octets accessibles, il peut se
contenter de savoir si le read a reussit ou non.
je voudrais savoir si mon code est correct, où s'il existe une autre méthode file_ est un fstream size_t sizeP0; char* ptr=new char[size]; the_file.read(ptr,size); Utilises gcount() pour connaitre le nombre d'octet effectivement lus ou
utilises readsome()?
Pourquoi utiliser readsome dans ce contexte? Ca n'a pas tellement d'intérêt en dehors des stream que l'on sait interactive il me semble.
Pour etre coherent avec une lecture en fin de fichier. Si il connait effectivement le nombre d'octets accessibles, il peut se contenter de savoir si le read a reussit ou non.
Michael
Jean-Marc Bourguet
Michael DOUBEZ writes:
Michael DOUBEZ writes:
je voudrais savoir si mon code est correct, où s'il existe une autre méthode file_ est un fstream size_t sizeP0; char* ptr=new char[size]; the_file.read(ptr,size); Utilises gcount() pour connaitre le nombre d'octet effectivement lus ou
utilises readsome()? Pourquoi utiliser readsome dans ce contexte? Ca n'a pas tellement
d'intérêt en dehors des stream que l'on sait interactive il me semble.
Pour etre coherent avec une lecture en fin de fichier.
readsome ne fait que lire ce qui a deja ete bufferise dans le streambuf. J'ai du mal a voir la coherence, surtout quand on considere qu'il parle de faire des mouvements avant, ce qui impliquerait que rien n'est bufferise a ce moment.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Michael DOUBEZ <michael.doubez@free.fr> writes:
Michael DOUBEZ <michael.doubez@free.fr> writes:
je voudrais savoir si mon code est correct, où s'il existe une autre
méthode
file_ est un fstream
size_t sizeP0;
char* ptr=new char[size];
the_file.read(ptr,size);
Utilises gcount() pour connaitre le nombre d'octet effectivement lus ou
utilises readsome()?
Pourquoi utiliser readsome dans ce contexte? Ca n'a pas tellement
d'intérêt en dehors des stream que l'on sait interactive il me semble.
Pour etre coherent avec une lecture en fin de fichier.
readsome ne fait que lire ce qui a deja ete bufferise dans le streambuf.
J'ai du mal a voir la coherence, surtout quand on considere qu'il parle de
faire des mouvements avant, ce qui impliquerait que rien n'est bufferise a
ce moment.
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
je voudrais savoir si mon code est correct, où s'il existe une autre méthode file_ est un fstream size_t sizeP0; char* ptr=new char[size]; the_file.read(ptr,size); Utilises gcount() pour connaitre le nombre d'octet effectivement lus ou
utilises readsome()? Pourquoi utiliser readsome dans ce contexte? Ca n'a pas tellement
d'intérêt en dehors des stream que l'on sait interactive il me semble.
Pour etre coherent avec une lecture en fin de fichier.
readsome ne fait que lire ce qui a deja ete bufferise dans le streambuf. J'ai du mal a voir la coherence, surtout quand on considere qu'il parle de faire des mouvements avant, ce qui impliquerait que rien n'est bufferise a ce moment.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
James Kanze
On Nov 13, 9:06 pm, Jean-Marc Bourguet wrote:
Michael DOUBEZ writes:
je voudrais savoir si mon code est correct, où s'il existe une autre méthode file_ est un fstream size_t sizeP0; char* ptr=new char[size]; the_file.read(ptr,size);
Utilises gcount() pour connaitre le nombre d'octet effectivement lus ou utilises readsome()?
Pourquoi utiliser readsome dans ce contexte?
Sans doute pour la même raison que beaucoup de gens utilisent rdbuf()->in_avail() : parce qu'ils en ont mal compris la sémantique.
Ca n'a pas tellement d'intérêt en dehors des stream que l'on sait interactive il me semble.
Même quand on connaît le flux interactif, je ne suis pas sûr de son utilité. Après un getline(), par exemple, il y a de fortes chances qu'elle ne lit rien (au moins sous Unix ou Windows). Et si l'utilisateur est assez pervers pour entrer des lignes plus longues que le buffer, il risque de ne pas fonctionner comme on veut non plus.
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
On Nov 13, 9:06 pm, Jean-Marc Bourguet <j...@bourguet.org> wrote:
Michael DOUBEZ <michael.dou...@free.fr> writes:
je voudrais savoir si mon code est correct, où s'il existe une autre
méthode
file_ est un fstream
size_t size=500;
char* ptr=new char[size];
the_file.read(ptr,size);
Utilises gcount() pour connaitre le nombre d'octet
effectivement lus ou utilises readsome()?
Pourquoi utiliser readsome dans ce contexte?
Sans doute pour la même raison que beaucoup de gens utilisent
rdbuf()->in_avail() : parce qu'ils en ont mal compris la
sémantique.
Ca n'a pas tellement d'intérêt en dehors des stream que l'on
sait interactive il me semble.
Même quand on connaît le flux interactif, je ne suis pas sûr de
son utilité. Après un getline(), par exemple, il y a de fortes
chances qu'elle ne lit rien (au moins sous Unix ou Windows). Et
si l'utilisateur est assez pervers pour entrer des lignes plus
longues que le buffer, il risque de ne pas fonctionner comme on
veut non plus.
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
je voudrais savoir si mon code est correct, où s'il existe une autre méthode file_ est un fstream size_t sizeP0; char* ptr=new char[size]; the_file.read(ptr,size);
Utilises gcount() pour connaitre le nombre d'octet effectivement lus ou utilises readsome()?
Pourquoi utiliser readsome dans ce contexte?
Sans doute pour la même raison que beaucoup de gens utilisent rdbuf()->in_avail() : parce qu'ils en ont mal compris la sémantique.
Ca n'a pas tellement d'intérêt en dehors des stream que l'on sait interactive il me semble.
Même quand on connaît le flux interactif, je ne suis pas sûr de son utilité. Après un getline(), par exemple, il y a de fortes chances qu'elle ne lit rien (au moins sous Unix ou Windows). Et si l'utilisateur est assez pervers pour entrer des lignes plus longues que le buffer, il risque de ne pas fonctionner comme on veut non plus.
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
James Kanze
On Nov 13, 1:13 pm, "Marc G" wrote:
je voudrais savoir si mon code est correct, où s'il existe une autre m éthode file_ est un fstream
// je me balade dans le fichier à l'endroit où je veux écrire
the_file.write(ptr,size); delete[] ptr;
Comme Fabien, j'utiliserais plutôt std::vector<char>, voire même std::string.
Il faut, aussi, gérer les erreurs éventuelles. Si read ne peut pas lire le nombre de caractères démandés, il positionne failbit ; c-à-d qu'il considère que la lecture a échouée. Si c'est ça que tu veux -- c-à-d que tu sais qu'il doit y avoir size caractères à l'endroit où tu te trouves, et que sinon, le fichier est mal formatté -- c'est bon. Si c'est plutôt une lecture spéculative, où tu ne sais pas combien de caractères restent dans le fichier à cet endroit, mais tu veux les traiter tous, jusqu'à concurrence de size, si le flux se trouve dans un état d'erreur après la lecture, il faut appeler gcount() pour savoir combien de caractères ont été réelement lus ; si c'est 0, c'est effectivement une erreur, mais sinon, tu as lu avec succès autant de caractères.
Et évidemment, si le flux se trouve en état d'erreur, et tu veux encore en faire quelque chose, il ne faut pas oublier d'effacer l'erreur avec un appel à clear().
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
On Nov 13, 1:13 pm, "Marc G" <mgueg...@metrica.fr> wrote:
je voudrais savoir si mon code est correct, où s'il existe une autre m éthode
file_ est un fstream
// je me balade dans le fichier à l'endroit où je veux écrire
the_file.write(ptr,size);
delete[] ptr;
Comme Fabien, j'utiliserais plutôt std::vector<char>, voire même
std::string.
Il faut, aussi, gérer les erreurs éventuelles. Si read ne peut
pas lire le nombre de caractères démandés, il positionne
failbit ; c-à-d qu'il considère que la lecture a échouée. Si
c'est ça que tu veux -- c-à-d que tu sais qu'il doit y avoir
size caractères à l'endroit où tu te trouves, et que sinon, le
fichier est mal formatté -- c'est bon. Si c'est plutôt une
lecture spéculative, où tu ne sais pas combien de caractères
restent dans le fichier à cet endroit, mais tu veux les traiter
tous, jusqu'à concurrence de size, si le flux se trouve dans un
état d'erreur après la lecture, il faut appeler gcount() pour
savoir combien de caractères ont été réelement lus ; si c'est
0, c'est effectivement une erreur, mais sinon, tu as lu avec
succès autant de caractères.
Et évidemment, si le flux se trouve en état d'erreur, et tu veux
encore en faire quelque chose, il ne faut pas oublier d'effacer
l'erreur avec un appel à clear().
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
// je me balade dans le fichier à l'endroit où je veux écrire
the_file.write(ptr,size); delete[] ptr;
Comme Fabien, j'utiliserais plutôt std::vector<char>, voire même std::string.
Il faut, aussi, gérer les erreurs éventuelles. Si read ne peut pas lire le nombre de caractères démandés, il positionne failbit ; c-à-d qu'il considère que la lecture a échouée. Si c'est ça que tu veux -- c-à-d que tu sais qu'il doit y avoir size caractères à l'endroit où tu te trouves, et que sinon, le fichier est mal formatté -- c'est bon. Si c'est plutôt une lecture spéculative, où tu ne sais pas combien de caractères restent dans le fichier à cet endroit, mais tu veux les traiter tous, jusqu'à concurrence de size, si le flux se trouve dans un état d'erreur après la lecture, il faut appeler gcount() pour savoir combien de caractères ont été réelement lus ; si c'est 0, c'est effectivement une erreur, mais sinon, tu as lu avec succès autant de caractères.
Et évidemment, si le flux se trouve en état d'erreur, et tu veux encore en faire quelque chose, il ne faut pas oublier d'effacer l'erreur avec un appel à clear().
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Michael DOUBEZ
Michael DOUBEZ writes:
Michael DOUBEZ writes:
je voudrais savoir si mon code est correct, où s'il existe une autre méthode file_ est un fstream size_t sizeP0; char* ptr=new char[size]; the_file.read(ptr,size); Utilises gcount() pour connaitre le nombre d'octet effectivement lus ou
utilises readsome()? Pourquoi utiliser readsome dans ce contexte? Ca n'a pas tellement
d'intérêt en dehors des stream que l'on sait interactive il me semble. Pour etre coherent avec une lecture en fin de fichier.
readsome ne fait que lire ce qui a deja ete bufferise dans le streambuf. J'ai du mal a voir la coherence, surtout quand on considere qu'il parle de faire des mouvements avant, ce qui impliquerait que rien n'est bufferise a ce moment.
Je n'ai pas compris ce que faisait readsome alors. Désolé pour le mauvais conseil.
Michael
Michael DOUBEZ <michael.doubez@free.fr> writes:
Michael DOUBEZ <michael.doubez@free.fr> writes:
je voudrais savoir si mon code est correct, où s'il existe une autre
méthode
file_ est un fstream
size_t sizeP0;
char* ptr=new char[size];
the_file.read(ptr,size);
Utilises gcount() pour connaitre le nombre d'octet effectivement lus ou
utilises readsome()?
Pourquoi utiliser readsome dans ce contexte? Ca n'a pas tellement
d'intérêt en dehors des stream que l'on sait interactive il me semble.
Pour etre coherent avec une lecture en fin de fichier.
readsome ne fait que lire ce qui a deja ete bufferise dans le streambuf.
J'ai du mal a voir la coherence, surtout quand on considere qu'il parle de
faire des mouvements avant, ce qui impliquerait que rien n'est bufferise a
ce moment.
Je n'ai pas compris ce que faisait readsome alors.
Désolé pour le mauvais conseil.
je voudrais savoir si mon code est correct, où s'il existe une autre méthode file_ est un fstream size_t sizeP0; char* ptr=new char[size]; the_file.read(ptr,size); Utilises gcount() pour connaitre le nombre d'octet effectivement lus ou
utilises readsome()? Pourquoi utiliser readsome dans ce contexte? Ca n'a pas tellement
d'intérêt en dehors des stream que l'on sait interactive il me semble. Pour etre coherent avec une lecture en fin de fichier.
readsome ne fait que lire ce qui a deja ete bufferise dans le streambuf. J'ai du mal a voir la coherence, surtout quand on considere qu'il parle de faire des mouvements avant, ce qui impliquerait que rien n'est bufferise a ce moment.
Je n'ai pas compris ce que faisait readsome alors. Désolé pour le mauvais conseil.