Re: Probleme avec istringstream
James Kanze a écrit :
> Rien. Ta chaîne commence bien par un nombre hexadécimal qui a la
> valeur 14. Si tu veux vérifer que c'est tout ce qu'il
> contient :
>
> if ( iss >> std::hex >> tmp >> std::ws
> && iss.get() == EOF ) {
> // c'est bon
> }
>
> Attention, en revanche. J'ai déjà rencontré des manipulateur
> std::ws qui positionnait failbit s'il était déjà à la fin (parce
> qu'il construisait un istream::sentry avant de commencer à
> lire), bien qu'un manipulateur ne doit jamais positionner
> failbit.
Le manipulateur ne peut pas positionner failbit, mais est-ce qu'il
peut positionner eofbit ? Je dis ca parce que pour du code similaire
a celui ci-dessus, j'ai l'habitude de tester eof() plutot que le
resultat de get():
if ( iss >> std::hex >> tmp >> std::ws
&& iss.eof() ) {
// c'est bon
}
Ca marche au moins avec g++, mais pour les autres ?
MD.
|