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.

Foi útil?

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".

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top