bonjour.
Je n'arrive pas à comprendre dans quel cas cette fonction active le bit d'erreur failbit.
J'ai la documentation suivante de chez Dinkum:
mon programme de test:basic_istream& getline(char_type *str, streamsize count,
char_type delim);
The function extracts up to count - 1 elements and stores them in the array beginning at str. It always stores char_type() after any extracted elements it stores. In order of testing, extraction stops:
at end of file
after the function extracts an element that compares equal to delim, in which case the element is neither put back nor appended to the controlled sequence
after the function extracts count - 1 elements
If the function extracts no elements or count - 1 elements, it calls setstate(failbit). In any case, it returns *this.
si je teste en saisissant "abcd'retour charriot'" le failbit ne s'active pas et pas de problème.(Mais ici lors de la premiere lecture 4 caractères sont extraits ("abcd") et d'après la documentation précédente le failbit devrait s'activer....)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include<iostream> #include<istream> using namespace std; char t[20]; char tt[20]; int main() { cin.getline(t,5); cout<<cin.rdstate()<<endl; cout<<t<<endl; cin.getline(tt,5); return 0; }
Mais si je teste avec cette fois "abcde'retour charriot'" le failbit s'active (rdstate=4) et la seconde lecture est évidemment impossible.Pourtant d'apres la doc 4 caractère sont chargés ("abcd") et je pense donc etre un peu dans la meme situation que précédemment.Je pensais alors que la seconde saisie prendrait ce qui reste à savoir "e'retour charriot'"..
Je n'ai pas réussi à trouver une doc qui me réponde à cette question à moins que je n'ai pas compris celle-çi...
Merci de votre aide !
Partager