ostringstream operador[] dando erro de compilação quando tentar ler do buffer
-
13-12-2019 - |
Pergunta
Eu tenho uma classe que estende ostringstream classe.
Class A: public ostringstream
{
}
Eu quero ler dados de tamanho especificado e um deslocamento do objeto.Para tentar:
A a_;
a_ << data1 << data2;
string datax(a_[offset], size);
Mas ter um erro de compilação na cadeia dadosx instrução.
error: no match for operator[] in ...
Como posso copiar os dados do objeto a_ para um determinado deslocamento e tamanho?Eu não quero remover dados do objeto a_.
NOTA:A classe foi projetada por alguém e não pode ser modificado.
Solução
Eu acredito que com o código que você poderia fazer:
a_ << data1 << data2;
string datax(&a_.str()[offset], size);
o que parece um pouco feio para mim.Por que não usar apenas simples std::stringstream
em vez disso?(a menos que você tenha um motivo forte para herdar a partir de std::ostringstream
.
Outras dicas
Primeiro de tudo, nada no padrão garante que decorrentes de std::ostringstream
irá trabalhar.Você seria melhor não fazê-lo em tudo.
Segundo, não há operator []
para std::ostringstream
então, por que deve haver para A
?
Finalmente, você pode chamar str()
no a_
e obter um std::string
com o conteúdo do buffer.Eu não tenho a certeza de que iria ajudá-lo, o que você quer fazer não é totalmente clara.
Você precisa chamar a função str() método:
ostringstream oss (ostringstream::out);
oss << "abcdef";
string s = oss.str();
cout << s.substr(1, 3) << endl;
Este exemplo seria saída "bcd".