Espacios de nombres
Variantes
Acciones

std::ios_base::sync_with_stdio

De cppreference.com
< cpp‎ | io‎ | ios base
 
 
 
 
staticbool sync_with_stdio(bool sync =true);

Establece si los flujos estándar de C++ se sincronizan con los flujos estándar de C después de cada operación de entrada/salida.

Los flujos estándar de C++ son las siguientes: std::cin, std::cout, std::cerr, std::clog, std::wcin, std::wcout, std::wcerr y std::wclog.

Los flujos estándar de C streams son las siguientes: stdin, stdout y stderr.

Para un flujo estándar str, sincronizado con el flujo de C f, los siguientes pares de funciones tienen el mismo efecto:

1)std::fputc(f, c) y str.rdbuf()->sputc(c)
2)std::fgetc(f) y str.rdbuf()->sbumpc()
3)std::ungetc(c, f) y str.rdbuf()->sputbackc(c)

En la práctica, esto significa que los flujos de sincronizados C++ no tienen búfer y cada operación de E/S en un flujo de C++ se aplica inmediatamente al búfer del flujo de C correspondiente. Esto hace posible mezclar libremente E/S de C++ y C.

Además, se garantiza que los flujos sincronizados de C++ son seguros para hilos (los caracteres individuales generados por múltiples hilos pueden intercalarse, pero no se producen carreras de datos).

Si la sincronización está desactivada, los flujos estándar de C++ pueden almacenar en búfer su E/S de forma independiente, lo que puede ser considerablemente más rápido en algunos casos.

Por defecto, los ocho flujos de C++ estándar están sincronizados con sus respectivos flujos de C.

Si se llama a esta función después de que se haya producido una E/S en el flujo estándar, el comportamiento está definido por la implementación: las implementaciones varían desde ningún efecto hasta la destrucción del búfer de lectura.

Contenido

[editar]Parámetros

sync - La nueva configuración de sincronización.

[editar]Valor de retorno

El estado de sincronización antes de la llamada a la función.

[editar]Ejemplo

#include <iostream>#include <cstdio>   int main(){ std::ios::sync_with_stdio(false);std::cout<<"a\n";std::printf("b\n");std::cout<<"c\n";}

Posible salida:

b a c

[editar]Informes de defectos

Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.

ID Aplicado a Comportamiento según lo publicado Comportamiento correcto
LWG 49 C++98 No se especificaba (1) qué estado se devolvía realmente y
(2) qué significaba "sincronizado" entre los flujos estándar de C y C++.
Ambos se especifican.

[editar]Véase también

Escribe al flujo de salida estándar de C stdout.
(objeto global)[editar]
Escribe al flujo de error estándar de C stderr, sin búfer.
(objeto global)[editar]
Escribe al flujo de error estándar de C stderr.
(objeto global)[editar]
close