[C con Clase] Soy novato y me aparece un salto de linea que no quiero.

Salvador Pozo salvador en conclase.net
Mar Oct 27 13:50:19 CET 2009


El pasado 2009-10-26 23:11:39, Jorge Mendez escribió:
 
JM> Muchas gracias ahora entiendo n_n
JM> yo pensaba que el endl era algun tipo de obligacion para hacer funcionar el
JM> escribir en pantalla :P

Hola:

endl no se limita a insertar un carácter de retorno de línea, también obliga a vaciar el buffer de salida, a pantalla si se trata de cout, o al stream que se aplique.

Mientras no se use este método, las salidas se acumulan en el buffer. Cuando el buffer se llena, automáticamente se envía el contenido al stream adecuado. Cuando se usa endl, se añade un retorno de línea y se vacía el buffer.

El buffer también se puede vaciar usando flush, sin insertar el retorno de línea.

JM> pd:  y que ocurre con el \n??? digamos esta prohibido usarlo en c++ o tienen
JM> distintas finalidades, respecto al endl??

Del mismo modo que se puede vaciar el buffer sin usar endl, se pueden insertar retornos de línea sin vaciar el buffer. Es decir, está permitido usar el carácter '\n', siempre que tengas en cuenta que tal vez no veas la salida inmediatamente.

El buffer de salida de cout también se vacía antes de hacer una entrada por cin, de modo que si, como en tu ejemplo, después de mostrar un texto (en este caso, un menú), haces una entrada desde cin, se visualizará todo el texto en el buffer inmediatamente.

cout << "Introduce una opción: " << flush;
cin >> opción;

equivale a:

cout << "Introduce una opción: ";
cin >> opción;

Hasta pronto.


-- 
Salvador Pozo (Administrador)
mailto:salvador en conclase.net


Más información sobre la lista de distribución Cconclase