Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: csp en 14 Mayo 2016, 23:29 pm



Título: Vaciar buffer
Publicado por: csp en 14 Mayo 2016, 23:29 pm
Buenas,

Antes que nada perdón por repostear la pregunta, pero volví a agarrar un libro de programación y sigo con la misma duda.
No sabía si publicarlo acá o en Ingeniería Inversa, que capaz me pueden dar una imagen más clara.

Supongamos este ejemplo:

Código
  1. std::cout << "Mensaje de prueba" << std:endl;

Según dice el libro, el manipulador de flujos endl, inserta un caracter de nueva línea en el objeto cout y vacía el buffer de salida.

A que hace referencia con esto? Porque según veo, sin insertar endl y solo \n generaría el mismo resultado.

Gracias por la respuesta.
Un saludo.


Título: Re: Vaciar buffer
Publicado por: ivancea96 en 14 Mayo 2016, 23:50 pm
Código
  1. cout << "Abc" << endl;

Viene siendo equivalente a:

Código
  1. cout << "Abc" << '\n' << flush;

Digo esto, porque a lo mejor lo ves en otros lugares con ese nombre, "flush".
Cuando tú envías datos a un stream, estos primero se almacenan en un buffer interno. Por ejemplo, si envías bytes a un archivo, es muy lento andar escribiendo 1 byte a 1 byte cada vez que quieres meter algo. Para evitar eso, se almacenan en un buffer interno, y luego, cuando llamas a esas funciones o 'automáticamente' (según), ese buffer se envía a su receptor (la consola en caso del cout), y el buffer se vacía.