Espacios de nombres
Variantes
Acciones

std::ios_base::sync_with_stdio

De cppreference.com
< cpp‎ | io‎ | ios base
 
 
Biblioteca de E/S
Manipuladores de E/S
E/S estilo C
Búferes
(en desuso en C++98)
Flujos
Abstracciones
E/S de archivos
E/S de cadenas
E/S de arrays
(en desuso en C++98)
(en desuso en C++98)
(en desuso en C++98)
Salida sincronizada
Tipos
Interfaz de categoría de error
(C++11)
 
 
static bool 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]