basic_streambuf :: seekoff ce qui devrait être retourné lorsque ios_base :: en | ios_base :: out est spécifié?

StackOverflow https://stackoverflow.com/questions/6800811

  •  22-10-2019
  •  | 
  •  

Question

27.6.3.4.2 tampon de gestion et de positionnement

pos_type seekoff(off_type off, ios_base::seekdir way,
    ios_base::openmode which = ios_base::in | ios_base::out);
  • Effets: les positions de Alters cours d'eau dans un ou plusieurs des séquences contrôlées d'une manière qui est définie séparément pour chaque classe dérivée de basic_streambuf dans la présente clause (27.8.2.4, 27.9.1.5).
  • Le comportement par défaut:. Retours pos_type(off_type(-1))

Jusqu'à présent, si bon. La dérivation de basic_streambuf J'utilise peut modifier sa position séparément pour ios_base::in et / ou ios_base::out. Mais, qu'est-ce que je dois revenir quand les deux sont spécifiés?

Si vous spécifiez ios_base::in ou ios_base::out, nous retournerions nouvelle position de flux de la séquence spécifique.

Était-ce utile?

La solution

Il est un peu à votre flux pour définir ce qui se passe. Construit dans le cours d'eau différents, en ce que certains peuvent avoir des positions de lecture et d'écriture séparées (stringstream) tandis que d'autres ont juste un (fstream).

Si l'utilisateur effectue une reposition et préciser à la fois dedans et dehors, peut-être vous devriez déplacer à la fois. Si elle est un cache avec un décalage pour obtenir la position actuelle de zéro, il est raisonnable d'échouer si les positions diffèrent.

Autres conseils

Après seekoff de 27.8.2.4 il semble que vous attendiez à l'échec.

Vérifier la table d'état 130, qui indique que les deux séquences d'entrée et de sortie doivent être positionnés seulement si

(which & (ios_base::in | ios_base::out)) == (ios_base::in) | ios_base::out))
and way == either ios_base::beg or ios_base::end
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top