Duplicar posible:
Does reading from stdin flush stdout?stdout y stdin relaciones
garantías C++ estándar que todos los datos contenidos en la memoria intermedia se imprimirán antes de la próxima llamada a std :: cin. De esta manera:
#include <iostream>
void bar()
{
int x;
std::cout << "Enter an integer: "; /* 1 */
std::cin >> x; /* 2 */
}
Debido a esto:
ISO/IEC 14882: 2011
27.4.2 objetos estrecha corriente [narrow.stream.objects]
2 Después de que el objeto cin se inicializa, cin.tie() devuelve & cout. Su estado es diferente de lo requerido para basic_ios :: init (27.5.5.2). objetos
27.4.3 ancha corriente [wide.stream.objects]
2 Después de la WCIN objeto se inicializa, wcin.tie() devuelve & wcout. Su estado es el mismo que se requiere para basic_ios :: init (27.5.5.2).
Pero en C realmente no hay garantías de que todo lo que contiene el búfer stdout se imprimirá antes de cualquier intento de stdin?
#include <stdio.h>
void bar()
{
int x;
printf("Enter an integer: "); /* 1 */
scanf("%d", &x); /* 2 */
}
sé que es la salida estándar búfer de línea pero no quieren poner '\ n' personaje en este tipo de situaciones. ¿Usar fflush/fclose/etc es la única forma correcta de obtener resultados justo antes de la solicitud de entrada en C?
Si su pregunta se refiere a C (y no sobre el uso de stdio en C++), por favor, etiquetarlo con C y C++ no. – Mat
Agregué la etiqueta C, pero esta pregunta es sobre la comparación IO C y C++, por lo que me gustaría conservar también la etiqueta C++. – FrozenHeart
Oh, ha pasado un tiempo desde que una pregunta aquí despertó mi interés. Nunca le había prestado atención al 'tie', estaré viendo esto :) –