Je veux écrire un tas de données dans un objet ostream
et renvoyer le nombre d'octets écrits. Par exemple:Comment puis-je suivre le nombre d'octets écrits dans un objet std :: ostream?
using namespace std;
size_t writeStuffToStream(ostream &stream)
{
stream << some_string << some_integer << some_other_arbitrary_object << endl;
return number_of_bytes_written;
}
Il est la solution de contournement évident d'écrire tout un stringstream
et d'obtenir le nombre d'octets de cela, puis écrire le stringstream
au courant, mais cela prend du temps supplémentaire et de la mémoire.
Je réalise également que si toutes les données que je voulais écrire étaient des chaînes préexistantes, il n'y aurait pas de problème. C'est some_integer
et some_other_arbitrary_object
qui sont le problème.
Vous pouvez enchaîner des objets streambuf, vous pouvez donc dériver un streambuf de std :: streambuf, et déléguer des opérations au streambuf d'origine après avoir enregistré les infos du compteur. http://www.mr-edd.co.uk/blog/beginners_guide_streambuf –