30 Input/output library [input.output]

30.5 Iostreams base classes [iostreams.base]

30.5.3 Class ios_­base [ios.base]

30.5.3.4 ios_­base static members [ios.members.static]

bool sync_with_stdio(bool sync = true);

Returns: true если предыдущее состояние standard iostream objects было синхронизировано, в противном случае возвращается false. При первом вызове функция возвращается true.

Effects: Если какая-либо операция ввода или вывода произошла с использованием стандартных потоков до вызова, эффект определяется реализацией. В противном случае, вызванный с false аргументом, он позволяет стандартным потокам работать независимо от стандартных потоков C.

Когда стандартный объект iostream str находится synchronized со стандартным потоком stdio f, эффект вставки символа с c помощью

fputc(f, c);

такой же, как эффект

str.rdbuf()->sputc(c);

для любых последовательностей символов; эффект извлечения персонажа с c помощью

c = fgetc(f);

такой же, как эффект

c = str.rdbuf()->sbumpc();

для любых последовательностей символов; и эффект отодвигая персонажа c по

ungetc(c, f);

такой же, как эффект

str.rdbuf()->sputbackc(c);

для любой последовательности символов.292

Это означает, что операции над стандартным объектом iostream могут произвольно сочетаться с операциями над соответствующим потоком stdio. На практике синхронизация обычно означает, что стандартный объект iostream и стандартный объект stdio совместно используют буфер.