std::basic_istream<CharT,Traits>:: sync
|
int
sync
(
)
;
|
||
Sincroniza el búfer de entrada con la fuente de datos asociada.
Se comporta como una UnformattedInputFunction , excepto que gcount() no se ve afectada. Después de construir y verificar el objeto centinela,
Si rdbuf() es un puntero nulo, retorna - 1 .
De lo contrario, llama a rdbuf ( ) - > pubsync ( ) . Si esa función retorna - 1 , llama a setstate ( badbit ) y retorna - 1 . De lo contrario, retorna 0 .
Contenidos |
Parámetros
(ninguno)
Valor de retorno
0 en caso de éxito, - 1 en caso de fallo o si el flujo no admite esta operación (no tiene búfer).
Notas
Al igual que con
readsome()
, está definido por la implementación si esta función hace algo con los flujos proporcionados por la biblioteca. La intención típica es que la siguiente operación de lectura recoja cualquier cambio que se haya realizado en la secuencia de entrada asociada después de que el búfer de flujo llenó por última vez su área de obtención. Para lograr eso,
sync()
puede vaciar el área de obtención, o puede rellenarla, o puede no hacer nada. Una excepción notable es Visual Studio, donde esta operación descarta la entrada no procesada cuando se llama con un flujo de entrada estándar.
Ejemplo
Demuestra el uso del flujo de entrada
sync()
con entrada de archivo. Nótese que la salida aquí está definida por la implementación, ya que las llamadas a
std::basic_filebuf::sync
están definidas por la implementación para lecturas.
#include <fstream> #include <iostream> void file_abc() { std::ofstream f("test.txt"); f << "abc\n"; } void file_123() { std::ofstream f("test.txt"); f << "123\n"; } int main() { file_abc(); // file now contains "abc" std::ifstream f("test.txt"); std::cout << "Reading from the file\n"; char c; f >> c; std::cout << c; file_123(); // file now contains "123" f >> c; std::cout << c; f >> c; std::cout << c << '\n'; f.close(); file_abc(); // file now contains "abc" f.open("test.txt"); std::cout << "Reading from the file, with sync()\n"; f >> c; std::cout << c; file_123(); // file now contains "123" f.sync(); f >> c; std::cout << c; f >> c; std::cout << c << '\n'; }
Salida posible:
Reading from the file abc Reading from the file, with sync() a23
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 62 | C++98 |
sync()
devolvía
traits
::
eof
(
)
si
rdbuf
(
)
-
>
pubsync
(
)
devuelve
-
1
|
devuelve - 1 en este caso |
Véase también
|
[virtual]
|
sincroniza los búferes con la secuencia de caracteres asociada
(función miembro protegida virtual de
std::basic_streambuf<CharT,Traits>
)
|
|
sincroniza con el dispositivo de almacenamiento subyacente
(función miembro pública de
std::basic_ostream<CharT,Traits>
)
|