Vaciar buffer

Iniciado por csp, 14 Mayo 2016, 23:29 PM

0 Miembros y 1 Visitante están viendo este tema.

csp

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 (cpp) [Seleccionar]
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.

ivancea96

Código (cpp) [Seleccionar]
cout << "Abc" << endl;

Viene siendo equivalente a:

Código (cpp) [Seleccionar]
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.