ifstream::putback plante au 4096ème élément
Bonjour,
je réalise un parser en C++.
Je viens donc ouvrir un ifstream, puis je viens lire les caractères à l'aide des fonctions peek() ou get(), et parfois je dois replacer des caractères consommés ce que je fais grâce à un putback()Tout se déroule très bien jusqu'à ce qu'un putback soit en échec. Je passe systématique par cette fonctions statique, qui me permet de contrôler le good() avant et après.
Code:
1 2 3 4 5 6
| void DTD_Static::putback(basic_ifstream<TYPE>* bifs, TYPE c)
{
UTL_REQUIRE(bifs->good());
bifs->putback(c);
UTL_ENSURE(bifs->good());
} |
J'ai découvert que cette erreur arrive alors qu'un compteur arrive à zéro (désolée, je suis sous Visual au boulot et sous minGW à la maison et là j'ai plus le nom sous la main). Mais j'ai trouvé que ce compteur qui décrémente était initialisé à 4096 à l'ouverture du fichier.
Alors oui, j'ai vu que je pouvais mapper le contenu de mon fichier dans un buffer char* à l'aide de la fonction read et de la taille du fichier, mais alors je perd le bénéficie des putback, get et autre peek.
Est-ce qu'il existe une solution de faire glisser le contenu à un instant T ? Merci.