erdando ostream e streambuf problema com xsputn e estouro

Venho pesquisando a criação de meu próprio ostream e, juntamente com isso, um streambuf para manipular o buffer do meu ostream. Na verdade, tenho a maioria funcionando, posso inserir (<<) no meu fluxo e obter strings sem problemas. Eu faço isso implementando a função virtual xsputn. No entanto, se eu inserir (<<) um float ou um int no fluxo, em vez de uma string, xsputn nunca será chamado.

Percorri o código e vejo que o fluxo está chamando do_put, depois f_put, que eventualmente tenta colocar o caractere float 1 de cada vez no buffer. Posso chamar minha implementação da sobrecarga da função virtual (int c) se eu deixar meu buffer sem espaço e, assim, obter os dados para o float e o int.

Agora, aqui está o problema, eu preciso saber quando o float está sendo colocado no buffer. Ou, dito de outra forma, preciso saber quando é a última vez que o estouro será chamado para um valor específico sendo transmitido. O motivo pelo qual o xsputn funciona para mim é porque recebo todo o valor antecipadamente e seu comprimento. Para que eu possa copiá-lo no buffer e chamar a função aguardando que o buffer esteja chei

Estou admitindo abusar do design ostream, pois preciso armazenar em cache a saída e enviá-la de uma só vez para cada valor inserido (<<).

Sempre fique claro, vou reafirmar o que estou fotografando de outra maneira. Há uma chance muito boa de eu estar fazendo isso da maneira errada.

Eu quero usar um ostream e um streambuf herdados para que eu possa inserir valores nele e permitir que ele manipule minha conversão de tipo para mim; depois, quero transportar essas informações para outro objeto que estou passando um identificador para o streambuf para (para?). Esse objeto tem E / S caras, então não quero enviar os dados 1 caractere por ve

Desculpe antecipadamente, se isso não estiver claro. E obrigado pelo seu tempo.

questionAnswers(1)

yourAnswerToTheQuestion