il veut dire operator overload !
for(int i=0;i<=15;i+=3)
{
str.assign(DateString.substr(i,2));
myStream<<str; //string to stringstream
cout<<str; //debug
myStream>>iTemp[it]; //stringstream to int
it++;
}
l'example est similair a un queue entre deux thread..
ici myStream herite de iostream , et le buffer est partatger
entre ostream , istream.
// myStream<<str;
on insert 2 chars -> le ptr egptr(end getptr) se deplace de 2
-> maintenant le buffer que voit istream et de 2 char ,
apres extraction , istream arrive a la fin , ios::eof bit est marquer(set)
et tout function qui suit 'fail' en silence apres.
1/ call myStream.clear(0) enleve le bit de eof (tout avec un 0 ) ,
et on continue normalement , mais dans ce cas l'allocation de memoire continue. (je ne sais pas si il y a une limite)
alors il faut ajouter myStream.seekp(0); myStream.seekg(0); , les curseurs
retourne au debut... , sans prendre plus de memoire.
2/ autre solution pour ne pas causer l'eof est myStream<<str<<endl;
istream ne prend(extract) pas '\n'... et pas d'eof (on met 3 on prend 2)
(mais toujours avec seekp(0) , seekg(0) pour la memoire )
3/ on peut aussi mettre le tout dans un try/catch et activer l'exception
'MyStream.exceptions(ios::eofbit)' pour l'eof , ... un exception a 'handler'
chaque fois eofbit est 'set' .
-> il'ya toujours autre solution pour eviter le tout.
moi j'ai souvent utiliser quelque printf()/sprintf() pour ca.
je sais que ce sujet est .... , mais j'ai trouver cette page dans
un dossier , (il n ya pas d'autre!), et je trouve quelque temps
pour voir le problem .
oui , je sais c'est un peu mal expliquer...
excusez moi pour tout derangement!
Message édité par __tomjost le 07-03-2010 à 23:24:20