Bon c'est un méchant copier collé très crade, je vous l'accorde mais c'est
seulement pour l'idée. Je pensais qu'en utilisant les templates j'aurais pu
utiliser des strings à la place des char []. Je ne sais pas quelle taille va
faire ma ligne à l'avance ! J'aimerais éviter d'allouer une taille qui sera
soit trop élevée, soit trop faible... et que ça soit dynamique en utilisant
les strings.
Comment faire ? Je vous remercie ! :)
--
TigrouMeow :)
================================
Le site des fournisseurs d'accès :
http://www.fai-fr.com
================================
Bon c'est un méchant copier collé très crade, je vous l'accorde mais c'est seulement pour l'idée. Je pensais qu'en utilisant les templates j'aurais pu utiliser des strings à la place des char []. Je ne sais pas quelle taille va faire ma ligne à l'avance ! J'aimerais éviter d'allouer une taille qui sera soit trop élevée, soit trop faible... et que ça soit dynamique en utilisant les strings.
Comment faire ? Je vous remercie ! :)
Bonjour, peut être simplement :
string line; while( getline( file, line ) ) cout << "lu " << line << endl;
Bonsoir ;)
J'aimerais utiliser au mieux les librairies du C++ donc je pense qu'on peut
éviter les réallocations dynamiques pour lire un fichier.
Pour l'instant, pour la lecture d'un fichier ligne par ligne, je fais :
char str[10];
Bon c'est un méchant copier collé très crade, je vous l'accorde mais c'est
seulement pour l'idée. Je pensais qu'en utilisant les templates j'aurais pu
utiliser des strings à la place des char []. Je ne sais pas quelle taille va
faire ma ligne à l'avance ! J'aimerais éviter d'allouer une taille qui sera
soit trop élevée, soit trop faible... et que ça soit dynamique en utilisant
les strings.
Comment faire ? Je vous remercie ! :)
Bonjour, peut être simplement :
string line;
while( getline( file, line ) )
cout << "lu " << line << endl;
Bon c'est un méchant copier collé très crade, je vous l'accorde mais c'est seulement pour l'idée. Je pensais qu'en utilisant les templates j'aurais pu utiliser des strings à la place des char []. Je ne sais pas quelle taille va faire ma ligne à l'avance ! J'aimerais éviter d'allouer une taille qui sera soit trop élevée, soit trop faible... et que ça soit dynamique en utilisant les strings.
Comment faire ? Je vous remercie ! :)
Bonjour, peut être simplement :
string line; while( getline( file, line ) ) cout << "lu " << line << endl;
-- 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
--
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
-- 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
TigrouMeow
"David" a écrit dans le message de news: 41683fe6$0$1149$
Bonsoir ;)
J'aimerais utiliser au mieux les librairies du C++ donc je pense qu'on peut éviter les réallocations dynamiques pour lire un fichier.
Pour l'instant, pour la lecture d'un fichier ligne par ligne, je fais : char str[10];
Bon c'est un méchant copier collé très crade, je vous l'accorde mais c'est seulement pour l'idée. Je pensais qu'en utilisant les templates j'aurais pu utiliser des strings à la place des char []. Je ne sais pas quelle taille va faire ma ligne à l'avance ! J'aimerais éviter d'allouer une taille qui sera soit trop élevée, soit trop faible... et que ça soit dynamique en utilisant les strings.
Comment faire ? Je vous remercie ! :)
Bonjour, peut être simplement :
string line; while( getline( file, line ) ) cout << "lu " << line << endl;
En effet, merci ! Je pensais que ça marchait en faisant file.getline( ... mais non !
"David" <dfleury2@libertysurf.fr> a écrit dans le message de news:
41683fe6$0$1149$626a14ce@news.free.fr...
Bonsoir ;)
J'aimerais utiliser au mieux les librairies du C++ donc je pense qu'on
peut éviter les réallocations dynamiques pour lire un fichier.
Pour l'instant, pour la lecture d'un fichier ligne par ligne, je fais :
char str[10];
Bon c'est un méchant copier collé très crade, je vous l'accorde mais
c'est seulement pour l'idée. Je pensais qu'en utilisant les templates
j'aurais pu utiliser des strings à la place des char []. Je ne sais pas
quelle taille va faire ma ligne à l'avance ! J'aimerais éviter d'allouer
une taille qui sera soit trop élevée, soit trop faible... et que ça soit
dynamique en utilisant les strings.
Comment faire ? Je vous remercie ! :)
Bonjour, peut être simplement :
string line;
while( getline( file, line ) )
cout << "lu " << line << endl;
En effet, merci ! Je pensais que ça marchait en faisant file.getline( ...
mais non !
Bon c'est un méchant copier collé très crade, je vous l'accorde mais c'est seulement pour l'idée. Je pensais qu'en utilisant les templates j'aurais pu utiliser des strings à la place des char []. Je ne sais pas quelle taille va faire ma ligne à l'avance ! J'aimerais éviter d'allouer une taille qui sera soit trop élevée, soit trop faible... et que ça soit dynamique en utilisant les strings.
Comment faire ? Je vous remercie ! :)
Bonjour, peut être simplement :
string line; while( getline( file, line ) ) cout << "lu " << line << endl;
En effet, merci ! Je pensais que ça marchait en faisant file.getline( ... mais non !
Fabien LE LEZ
On Sat, 9 Oct 2004 21:49:48 +0200, "TigrouMeow" :
Je pensais que ça marchait en faisant file.getline( ...
En fait, vraisemblablement pour des raisons historiques, le header <iostream> ne connaît rien de std::string.
-- ;-)
On Sat, 9 Oct 2004 21:49:48 +0200, "TigrouMeow"
<TigrouMeowMEOW@OnLineONLINE.Fr>:
Je pensais que ça marchait en faisant file.getline( ...
En fait, vraisemblablement pour des raisons historiques, le header
<iostream> ne connaît rien de std::string.
Je pensais que ça marchait en faisant file.getline( ...
En fait, vraisemblablement pour des raisons historiques, le header <iostream> ne connaît rien de std::string.
-- ;-)
Alexandre
"Fabien LE LEZ" a écrit dans le message de news:
On Sat, 9 Oct 2004 21:49:48 +0200, "TigrouMeow" :
Je pensais que ça marchait en faisant file.getline( ...
En fait, vraisemblablement pour des raisons historiques, le header <iostream> ne connaît rien de std::string.
parce qu'il me semble qu'il est plus ancien, non ? D'où une utilisation exclusive de nos chers (char *).... A chaque fois ça me choque d'ailleurs. Je passe beaucoup de temps à dire à mes étudiants : n'utilisez pas char [], mais string ! et puis dès qu'on ouvre un fichier (avec fstream par ex) il faut fournir le nom par (char *)... Ok il y c_str() mais c'est pas évident de leur faire comprendre qu'il faut utiliser string quand une classe standard ne l'utilise pas ! Il y aurait quand même pu avoir une surcharge...
"Fabien LE LEZ" <gramster@gramster.com> a écrit dans le message de news:
bmogm0dd3ikq8jstjcsm83iqe01alvop2m@4ax.com...
On Sat, 9 Oct 2004 21:49:48 +0200, "TigrouMeow"
<TigrouMeowMEOW@OnLineONLINE.Fr>:
Je pensais que ça marchait en faisant file.getline( ...
En fait, vraisemblablement pour des raisons historiques, le header
<iostream> ne connaît rien de std::string.
parce qu'il me semble qu'il est plus ancien, non ? D'où une utilisation
exclusive de nos chers (char *)....
A chaque fois ça me choque d'ailleurs. Je passe beaucoup de temps à dire à
mes étudiants : n'utilisez pas char [], mais string !
et puis dès qu'on ouvre un fichier (avec fstream par ex) il faut fournir le
nom par (char *)... Ok il y c_str() mais c'est pas évident de leur faire
comprendre qu'il faut utiliser string quand une classe standard ne l'utilise
pas ! Il y aurait quand même pu avoir une surcharge...
Je pensais que ça marchait en faisant file.getline( ...
En fait, vraisemblablement pour des raisons historiques, le header <iostream> ne connaît rien de std::string.
parce qu'il me semble qu'il est plus ancien, non ? D'où une utilisation exclusive de nos chers (char *).... A chaque fois ça me choque d'ailleurs. Je passe beaucoup de temps à dire à mes étudiants : n'utilisez pas char [], mais string ! et puis dès qu'on ouvre un fichier (avec fstream par ex) il faut fournir le nom par (char *)... Ok il y c_str() mais c'est pas évident de leur faire comprendre qu'il faut utiliser string quand une classe standard ne l'utilise pas ! Il y aurait quand même pu avoir une surcharge...
Fabien LE LEZ
On Tue, 12 Oct 2004 08:35:10 +0200, "Alexandre" :
mes étudiants : n'utilisez pas char [], mais string ! et puis dès qu'on ouvre un fichier (avec fstream par ex) il faut fournir le nom par (char *)
Euh... il y a une confusion, là ! Si "char*" pose énormément de problèmes, "char const*" en pose beaucoup moins. Or, si je ne m'abuse, on passe le nom d'un fichier par "char const*".
-- ;-)
On Tue, 12 Oct 2004 08:35:10 +0200, "Alexandre"
<alex.g@netcourrier.com>:
mes étudiants : n'utilisez pas char [], mais string !
et puis dès qu'on ouvre un fichier (avec fstream par ex) il faut fournir le
nom par (char *)
Euh... il y a une confusion, là !
Si "char*" pose énormément de problèmes, "char const*" en pose
beaucoup moins. Or, si je ne m'abuse, on passe le nom d'un fichier par
"char const*".
mes étudiants : n'utilisez pas char [], mais string ! et puis dès qu'on ouvre un fichier (avec fstream par ex) il faut fournir le nom par (char *)
Euh... il y a une confusion, là ! Si "char*" pose énormément de problèmes, "char const*" en pose beaucoup moins. Or, si je ne m'abuse, on passe le nom d'un fichier par "char const*".
-- ;-)
Alexandre
Euh... il y a une confusion, là ! Si "char*" pose énormément de problèmes, "char const*" en pose beaucoup moins. Or, si je ne m'abuse, on passe le nom d'un fichier par "char const*".
je sais, je pointais simplement le fait que l'on essaye d'encourager ceux qui viennent du C à utiliser string à la place d'un char * (même const) et les classes de la lib standard de le font même pas
-- ;-)
Euh... il y a une confusion, là !
Si "char*" pose énormément de problèmes, "char const*" en pose
beaucoup moins. Or, si je ne m'abuse, on passe le nom d'un fichier par
"char const*".
je sais, je pointais simplement le fait que l'on essaye d'encourager ceux
qui viennent du C à utiliser string à la place d'un char * (même const) et
les classes de la lib standard de le font même pas
Euh... il y a une confusion, là ! Si "char*" pose énormément de problèmes, "char const*" en pose beaucoup moins. Or, si je ne m'abuse, on passe le nom d'un fichier par "char const*".
je sais, je pointais simplement le fait que l'on essaye d'encourager ceux qui viennent du C à utiliser string à la place d'un char * (même const) et les classes de la lib standard de le font même pas
-- ;-)
drkm
"Alexandre" writes:
"Fabien LE LEZ" a écrit dans le message de news:
On Sat, 9 Oct 2004 21:49:48 +0200, "TigrouMeow" :
Je pensais que ça marchait en faisant file.getline( ...
En fait, vraisemblablement pour des raisons historiques, le header <iostream> ne connaît rien de std::string.
parce qu'il me semble qu'il est plus ancien, non ?
Ben non, ils sont nés ensemble, le 1er septembre 1998. Après une période de gestation plus ou moins longue selon le cas. Je ne vois a priori pas de raison de ne pas avoir surchargé
Mais je ne connais pas l'histoire de la norme, et il doit y avoir une raison qui m'échappe. AMHA, ce n'est cependant pas seulement le fait que les std::string soient apparues plus tard qui ont empéché d'ajouter ce constructeur avant la sortie de la norme.
--drkm
"Alexandre" <alex.g@netcourrier.com> writes:
"Fabien LE LEZ" <gramster@gramster.com> a écrit dans le message de news:
bmogm0dd3ikq8jstjcsm83iqe01alvop2m@4ax.com...
On Sat, 9 Oct 2004 21:49:48 +0200, "TigrouMeow"
<TigrouMeowMEOW@OnLineONLINE.Fr>:
Je pensais que ça marchait en faisant file.getline( ...
En fait, vraisemblablement pour des raisons historiques, le header
<iostream> ne connaît rien de std::string.
parce qu'il me semble qu'il est plus ancien, non ?
Ben non, ils sont nés ensemble, le 1er septembre 1998. Après une
période de gestation plus ou moins longue selon le cas. Je ne vois a
priori pas de raison de ne pas avoir surchargé
Mais je ne connais pas l'histoire de la norme, et il doit y avoir
une raison qui m'échappe. AMHA, ce n'est cependant pas seulement le
fait que les std::string soient apparues plus tard qui ont empéché
d'ajouter ce constructeur avant la sortie de la norme.
Je pensais que ça marchait en faisant file.getline( ...
En fait, vraisemblablement pour des raisons historiques, le header <iostream> ne connaît rien de std::string.
parce qu'il me semble qu'il est plus ancien, non ?
Ben non, ils sont nés ensemble, le 1er septembre 1998. Après une période de gestation plus ou moins longue selon le cas. Je ne vois a priori pas de raison de ne pas avoir surchargé
Mais je ne connais pas l'histoire de la norme, et il doit y avoir une raison qui m'échappe. AMHA, ce n'est cependant pas seulement le fait que les std::string soient apparues plus tard qui ont empéché d'ajouter ce constructeur avant la sortie de la norme.
--drkm
Loïc Joly
drkm wrote:
"Alexandre" writes:
"Fabien LE LEZ" a écrit dans le message de news:
En fait, vraisemblablement pour des raisons historiques, le header <iostream> ne connaît rien de std::string.
parce qu'il me semble qu'il est plus ancien, non ?
Ben non, ils sont nés ensemble, le 1er septembre 1998. Après une période de gestation plus ou moins longue selon le cas. Je ne vois a priori pas de raison de ne pas avoir surchargé
Ce qui m'a été répondu sur le sujet (je n'étais pas né à l'époque), c'est qu'un des but était d'essayer d'éviter de créer une dépendance entre deux en-têtes de la bibliothèque standard, ce qui me semble personellement une raison assez faible.
-- Loïc
drkm wrote:
"Alexandre" <alex.g@netcourrier.com> writes:
"Fabien LE LEZ" <gramster@gramster.com> a écrit dans le message de news:
En fait, vraisemblablement pour des raisons historiques, le header
<iostream> ne connaît rien de std::string.
parce qu'il me semble qu'il est plus ancien, non ?
Ben non, ils sont nés ensemble, le 1er septembre 1998. Après une
période de gestation plus ou moins longue selon le cas. Je ne vois a
priori pas de raison de ne pas avoir surchargé
Ce qui m'a été répondu sur le sujet (je n'étais pas né à l'époque),
c'est qu'un des but était d'essayer d'éviter de créer une dépendance
entre deux en-têtes de la bibliothèque standard, ce qui me semble
personellement une raison assez faible.
En fait, vraisemblablement pour des raisons historiques, le header <iostream> ne connaît rien de std::string.
parce qu'il me semble qu'il est plus ancien, non ?
Ben non, ils sont nés ensemble, le 1er septembre 1998. Après une période de gestation plus ou moins longue selon le cas. Je ne vois a priori pas de raison de ne pas avoir surchargé
Ce qui m'a été répondu sur le sujet (je n'étais pas né à l'époque), c'est qu'un des but était d'essayer d'éviter de créer une dépendance entre deux en-têtes de la bibliothèque standard, ce qui me semble personellement une raison assez faible.
-- Loïc
Fabien LE LEZ
On Tue, 12 Oct 2004 21:01:16 +0200, Loïc Joly :
c'est qu'un des but était d'essayer d'éviter de créer une dépendance entre deux en-têtes de la bibliothèque standard, ce qui me semble personellement une raison assez faible.
D'autant que la dépendance existe bel et bien (dans un seul sens), il me semble : getline() est défini dans <string>...
-- ;-)
On Tue, 12 Oct 2004 21:01:16 +0200, Loïc Joly
<loic.actarus.joly@wanadoo.fr>:
c'est qu'un des but était d'essayer d'éviter de créer une dépendance
entre deux en-têtes de la bibliothèque standard, ce qui me semble
personellement une raison assez faible.
D'autant que la dépendance existe bel et bien (dans un seul sens), il
me semble : getline() est défini dans <string>...
c'est qu'un des but était d'essayer d'éviter de créer une dépendance entre deux en-têtes de la bibliothèque standard, ce qui me semble personellement une raison assez faible.
D'autant que la dépendance existe bel et bien (dans un seul sens), il me semble : getline() est défini dans <string>...