Cómo vaciar el búfer cout en Visual C++


Resumen


En una aplicación desarrollada con Microsoft C o C++, se almacena en búfer la secuencia cout. En otras palabras, la información enviada a la secuencia cout no aparece en la pantalla hasta que se vacían sus búferes. Para Visual C++ 4.2 y versiones posteriores, este comportamiento sólo se produce al utilizar las antiguas bibliotecas iostream. Existen cuatro métodos para vaciar el búfer cout, como sigue:
  • Use el manipulador endl para insertar un carácter de nueva línea en la secuencia de salida y vaciar el búfer. Utilice el operador de inserción con el manipulador endl, como sigue:
    cout << ... << endl;
  • Utilice la función miembro vaciado en la clase multihilado o el manipulador de vaciado. El manipulador de vaciado no inserta un carácter de nueva línea en la secuencia antes de que vacía el búfer. Para llamar a la función miembro vaciado, utilice código similar al siguiente:
    cout.flush();
    Utilice el operador de inserción con el manipulador de vaciado de la manera siguiente:
    cout << ... << flush;
  • Leer de la secuencia de cin o escribir en las secuencias cerr o ensuciado. Puesto que estos objetos comparten el búfer con cout, cada uno vuelca el contenido del búfer antes de realizar cambios en él.
  • Salga del programa para vaciar todos los búferes actualmente en uso.

Más información


Dado que se almacena en búfer cout, texto que crea la aplicación no se muestra inmediatamente en la pantalla. En algunas circunstancias, este comportamiento puede malinterpretarse como un error en cout. Para obtener un ejemplo de una aplicación que determina cuándo se debe vaciar el búfer cout, consulte páginas 377-378 de Microsoft C y C++ "Guía del usuario de bibliotecas de clase" para la versión 7.0. Para obtener más información acerca de cómo vaciar la secuencia cout con el manipulador endl, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base: