Yo estaba tratando el siguiente fragmento, pero no está dando el resultado deseado:

#include<iostream>
#include<sstream>
using namespace std;
void MyPrint(ostream& stream)
{
    cout<<stream.rdbuf()<< endl;
}
int main()
{
    stringstream ss;
    ss<<"hello there";
    MyPrint(ss);                //Prints fine

    ostringstream oss;
    oss<<"hello there";
    MyPrint(oss);               //Does not print anything
    getchar();
}

Soy consciente de que la única posibles diferencias entre stringstream y ostringstream es que las más de las fuerzas en la dirección y es un poco más rápido que stringstream.

Estoy perdiendo de algo?

PS: UNA pregunta similar fue publicado anteriormente, pero no recibe ninguna respuesta.

InformationsquelleAutor Saksham | 2013-08-15

2 Comentarios

  1. 22

    std::stringstream y std::ostringstream pasar diferentes
    banderas a la std::stringbuf. En particular, la
    std::stringbuf de un std::ostringstream no apoyo
    la lectura. Y std::cout << stream.rdbuf() es una operación de lectura
    en el streambuf.

    La manera de extraer caracteres de un std::ostringstream es por
    el uso de la std::ostringstream::str() función.

  2. 0

    stringstream no debería ser considerado como una bidireccional implementación de ostringstream y istringstream. Se implementa como un derrived de clase de ambos ostringstream y istringstream, que es la razón por la que implementa la entrada y la salida de capacidades.

    La elección de cuál utilizar depende de para qué se utiliza. Si sólo se necesita escribir datos en un flujo sin ser capaz de acceder a los datos a través de un arroyo, luego de un ostringstream es todo lo que se necesita. Sin embargo, si desea implementar bidireccional en algo que ofrecer a una API, pero la limitan, usted puede cast:

    stringstream ss;  //My bidirectional stream
    
    ostringstream *p_os = &ss;  //Now an output stream to be passed to something only allowed to write to it.
    
    int bytes = collectSomeData(p_oss);

Dejar respuesta

Please enter your comment!
Please enter your name here