Je lis dans la faq
bool is_readable( const std::string & file )
{
std::ifstream fichier( file.c_str() );
return fichier != 0;
}
Pourquoi on n'utilise pas return fichier.good() ?
Je lis dans la faq
bool is_readable( const std::string & file )
{
std::ifstream fichier( file.c_str() );
return fichier != 0;
}
Pourquoi on n'utilise pas return fichier.good() ?
Je lis dans la faq
bool is_readable( const std::string & file )
{
std::ifstream fichier( file.c_str() );
return fichier != 0;
}
Pourquoi on n'utilise pas return fichier.good() ?
Je lis dans la faq
bool is_readable( const std::string & file )
{
std::ifstream fichier( file.c_str() );
return fichier != 0;
}
Pourquoi on n'utilise pas return fichier.good() ?
Je lis dans la faq
bool is_readable( const std::string & file )
{
std::ifstream fichier( file.c_str() );
return fichier != 0;
}
Pourquoi on n'utilise pas return fichier.good() ?
Je lis dans la faq
bool is_readable( const std::string & file )
{
std::ifstream fichier( file.c_str() );
return fichier != 0;
}
Pourquoi on n'utilise pas return fichier.good() ?
Bruno CAUSSE wrote:Je lis dans la faq
bool is_readable( const std::string & file )
{
std::ifstream fichier( file.c_str() );
return fichier != 0;
Drôle de façon de l'écrire. L'idiome consacré, c'est :
return fichier ;
C'est la première fois que je vois la comparaison avec 0.
Bruno CAUSSE wrote:
Je lis dans la faq
bool is_readable( const std::string & file )
{
std::ifstream fichier( file.c_str() );
return fichier != 0;
Drôle de façon de l'écrire. L'idiome consacré, c'est :
return fichier ;
C'est la première fois que je vois la comparaison avec 0.
Bruno CAUSSE wrote:Je lis dans la faq
bool is_readable( const std::string & file )
{
std::ifstream fichier( file.c_str() );
return fichier != 0;
Drôle de façon de l'écrire. L'idiome consacré, c'est :
return fichier ;
C'est la première fois que je vois la comparaison avec 0.
J'avoue que c'est pas très joli, mais bon, pourquoi aussi ces
satanés flux ont-ils un operateur de convertion vers void* et non
vers bool ?
J'avoue que c'est pas très joli, mais bon, pourquoi aussi ces
satanés flux ont-ils un operateur de convertion vers void* et non
vers bool ?
J'avoue que c'est pas très joli, mais bon, pourquoi aussi ces
satanés flux ont-ils un operateur de convertion vers void* et non
vers bool ?
Ceci dit, tout ça est peut-être un peu trop subtil et on aurait
pu vivre avec l'impossibilité de faire le test « if (flux) » :
ce n'est pas difficile d'écrire if (!flux.fail()) ou autre test
du genre il me semble. Personnellement je n'écris jamais le
test if (flux)...
Ceci dit, tout ça est peut-être un peu trop subtil et on aurait
pu vivre avec l'impossibilité de faire le test « if (flux) » :
ce n'est pas difficile d'écrire if (!flux.fail()) ou autre test
du genre il me semble. Personnellement je n'écris jamais le
test if (flux)...
Ceci dit, tout ça est peut-être un peu trop subtil et on aurait
pu vivre avec l'impossibilité de faire le test « if (flux) » :
ce n'est pas difficile d'écrire if (!flux.fail()) ou autre test
du genre il me semble. Personnellement je n'écris jamais le
test if (flux)...
Bruno CAUSSE wrote:Je lis dans la faq
bool is_readable( const std::string & file )
{
std::ifstream fichier( file.c_str() );
return fichier != 0;
Drôle de façon de l'écrire. L'idiome consacré, c'est :
return fichier ;
C'est la première fois que je vois la comparaison avec 0.
La comparaison avec 0 (ou avec NULL) permet d'éviter un
warning sur certains compilateurs, dont VC++ :
warning C4800: 'void *' : forcing value to bool 'true' or 'false'
(performance warning)
J'avoue que c'est pas très joli, mais bon, pourquoi aussi ces
satanés flux ont-ils un operateur de convertion vers void* et
non vers bool ?
Bruno CAUSSE wrote:
Je lis dans la faq
bool is_readable( const std::string & file )
{
std::ifstream fichier( file.c_str() );
return fichier != 0;
Drôle de façon de l'écrire. L'idiome consacré, c'est :
return fichier ;
C'est la première fois que je vois la comparaison avec 0.
La comparaison avec 0 (ou avec NULL) permet d'éviter un
warning sur certains compilateurs, dont VC++ :
warning C4800: 'void *' : forcing value to bool 'true' or 'false'
(performance warning)
J'avoue que c'est pas très joli, mais bon, pourquoi aussi ces
satanés flux ont-ils un operateur de convertion vers void* et
non vers bool ?
Bruno CAUSSE wrote:Je lis dans la faq
bool is_readable( const std::string & file )
{
std::ifstream fichier( file.c_str() );
return fichier != 0;
Drôle de façon de l'écrire. L'idiome consacré, c'est :
return fichier ;
C'est la première fois que je vois la comparaison avec 0.
La comparaison avec 0 (ou avec NULL) permet d'éviter un
warning sur certains compilateurs, dont VC++ :
warning C4800: 'void *' : forcing value to bool 'true' or 'false'
(performance warning)
J'avoue que c'est pas très joli, mais bon, pourquoi aussi ces
satanés flux ont-ils un operateur de convertion vers void* et
non vers bool ?
Dans le message 42ae0547$0$899$,J'avoue que c'est pas très joli, mais bon, pourquoi aussi
ces satanés flux ont-ils un operateur de convertion vers
void* et non vers bool ?
Ce serait trop risqué, car bool est un type entier qui
pourrait ensuite être utilisé par accident dans des
expressions où ce n'est pas ce que l'on veut. Par exemple,
comme
double d= (bool)0;
fonctionne, alors ceci fonctionnerait aussi
double d= flux; // OK si stream::operator bool()
La conversion vers void* donne moins de surprise, sauf à ceux
qui se demandent pourquoi :-)
double d= (void*)0; // ERREUR conversion impossible
double f= flux; // ERREUR avec stream::operator void*()
Ceci dit, tout ça est peut-être un peu trop subtil et on
aurait pu vivre avec l'impossibilité de faire le test « if
(flux) » : ce n'est pas difficile d'écrire if (!flux.fail())
ou autre test du genre il me semble.
Personnellement je n'écris jamais le test if (flux)...
Dans le message 42ae0547$0$899$8fcfb975@news.wanadoo.fr,
J'avoue que c'est pas très joli, mais bon, pourquoi aussi
ces satanés flux ont-ils un operateur de convertion vers
void* et non vers bool ?
Ce serait trop risqué, car bool est un type entier qui
pourrait ensuite être utilisé par accident dans des
expressions où ce n'est pas ce que l'on veut. Par exemple,
comme
double d= (bool)0;
fonctionne, alors ceci fonctionnerait aussi
double d= flux; // OK si stream::operator bool()
La conversion vers void* donne moins de surprise, sauf à ceux
qui se demandent pourquoi :-)
double d= (void*)0; // ERREUR conversion impossible
double f= flux; // ERREUR avec stream::operator void*()
Ceci dit, tout ça est peut-être un peu trop subtil et on
aurait pu vivre avec l'impossibilité de faire le test « if
(flux) » : ce n'est pas difficile d'écrire if (!flux.fail())
ou autre test du genre il me semble.
Personnellement je n'écris jamais le test if (flux)...
Dans le message 42ae0547$0$899$,J'avoue que c'est pas très joli, mais bon, pourquoi aussi
ces satanés flux ont-ils un operateur de convertion vers
void* et non vers bool ?
Ce serait trop risqué, car bool est un type entier qui
pourrait ensuite être utilisé par accident dans des
expressions où ce n'est pas ce que l'on veut. Par exemple,
comme
double d= (bool)0;
fonctionne, alors ceci fonctionnerait aussi
double d= flux; // OK si stream::operator bool()
La conversion vers void* donne moins de surprise, sauf à ceux
qui se demandent pourquoi :-)
double d= (void*)0; // ERREUR conversion impossible
double f= flux; // ERREUR avec stream::operator void*()
Ceci dit, tout ça est peut-être un peu trop subtil et on
aurait pu vivre avec l'impossibilité de faire le test « if
(flux) » : ce n'est pas difficile d'écrire if (!flux.fail())
ou autre test du genre il me semble.
Personnellement je n'écris jamais le test if (flux)...
Ceci dit, tout ça est peut-être un peu trop subtil et on
aurait pu vivre avec l'impossibilité de faire le test « if
(flux) » : ce n'est pas difficile d'écrire if (!flux.fail())
ou autre test du genre il me semble. Personnellement je
n'écris jamais le test if (flux)...
Je ne l'écris pas souvent directement, mais le test
while (flux >> valeur)
est quand même d'usage courant, et serait peu joli à écrire
avec fail.
Ceci dit, tout ça est peut-être un peu trop subtil et on
aurait pu vivre avec l'impossibilité de faire le test « if
(flux) » : ce n'est pas difficile d'écrire if (!flux.fail())
ou autre test du genre il me semble. Personnellement je
n'écris jamais le test if (flux)...
Je ne l'écris pas souvent directement, mais le test
while (flux >> valeur)
est quand même d'usage courant, et serait peu joli à écrire
avec fail.
Ceci dit, tout ça est peut-être un peu trop subtil et on
aurait pu vivre avec l'impossibilité de faire le test « if
(flux) » : ce n'est pas difficile d'écrire if (!flux.fail())
ou autre test du genre il me semble. Personnellement je
n'écris jamais le test if (flux)...
Je ne l'écris pas souvent directement, mais le test
while (flux >> valeur)
est quand même d'usage courant, et serait peu joli à écrire
avec fail.
Personnellement je n'écris jamais le test if (flux)...
Je ne l'écris pas souvent directement, mais le test
while (flux >> valeur)
est quand même d'usage courant, et serait peu joli à écrire avec
fail.
Personnellement je n'écris jamais le test if (flux)...
Je ne l'écris pas souvent directement, mais le test
while (flux >> valeur)
est quand même d'usage courant, et serait peu joli à écrire avec
fail.
Personnellement je n'écris jamais le test if (flux)...
Je ne l'écris pas souvent directement, mais le test
while (flux >> valeur)
est quand même d'usage courant, et serait peu joli à écrire avec
fail.
Michel Michaud wrote:Personnellement je n'écris jamais le test if (flux)...
Pourquoi ? C'est toujours « while ( flux >> x ) » ou « while (
getline( flux, chaine ) » ?
J'ai joué un moment avec l'idée d'écrire :
while ( ! (flux >> x).fail() ) ...
C'est plus explicit. Mais ce n'est pas idiomatique, et je crains
que ça déroute trop.
Michel Michaud wrote:
Personnellement je n'écris jamais le test if (flux)...
Pourquoi ? C'est toujours « while ( flux >> x ) » ou « while (
getline( flux, chaine ) » ?
J'ai joué un moment avec l'idée d'écrire :
while ( ! (flux >> x).fail() ) ...
C'est plus explicit. Mais ce n'est pas idiomatique, et je crains
que ça déroute trop.
Michel Michaud wrote:Personnellement je n'écris jamais le test if (flux)...
Pourquoi ? C'est toujours « while ( flux >> x ) » ou « while (
getline( flux, chaine ) » ?
J'ai joué un moment avec l'idée d'écrire :
while ( ! (flux >> x).fail() ) ...
C'est plus explicit. Mais ce n'est pas idiomatique, et je crains
que ça déroute trop.