2010-12-05 35 views

Répondre

5

Ce n'est pas const car l'interface streambuf ne sait pas comment vous remplissez le tampon. Par exemple les méthodes underflow et uflow peuvent tirer n octets à partir d'un fichier ou similaire et remplir le tampon existant du streambuf. Vous pouvez également utiliser le même stockage pour les tampons pour un flux de flux en lecture/écriture. Le streambuf est un tampon, un cache si vous voulez. Il se situe entre la fonctionnalité de formatage du [io]stream et le flux de caractères sous-jacent réel (généralement un fichier). C'est une fenêtre sur ce flux sous-jacent, et il est logique de réutiliser le stockage pour cette fenêtre (ce qui signifie que ce n'est probablement pas const).

Est-il sécuritaire de rejeter la constance? Peut être. Cela dépendra de l'implémentation réelle du streambuf et de la manière dont il est utilisé.

+0

Bien sûr! :) J'étais confus car j'écris actuellement un streambuf pour un C-string constant. Pour mon but, 'underflow' et' uflow' ne sont pas utilisés. Que je suis bête. +1 aussi bien pour avoir écrit une réponse vraiment sympa. –