std::basic_istream<CharT,Traits>:: sync
|
int
sync
(
)
;
|
||
Синхронизирует входной буфер с ассоциированным источником данных.
Ведут себя как UnformattedInputFunction , за исключением того, что на gcount() это не влияет. После создания и проверки сторожевого объекта,
Если rdbuf() является нулевым указателем, возвращает - 1 .
В противном случае вызывает rdbuf ( ) - > pubsync ( ) . Если эта функция возвращает - 1 , вызывает setstate ( badbit ) и возвращает - 1 . В противном случае возвращает 0 .
Содержание |
Параметры
(нет)
Возвращаемое значение
0 при успешном выполнении, - 1 при ошибке или если поток не поддерживает данную операцию (является небуферизованным).
Примечания
Как и в случае с
readsome()
, определяется реализацией, выполняет ли эта функция какие-либо действия с потоками, предоставляемыми библиотекой. Обычно предполагается, что следующая операция чтения должна учитывать любые изменения, которые могли быть внесены в связанную входную последовательность после последнего заполнения буфером потока своей области получения. Для достижения этого
sync()
может опустошить область получения, может перезаполнить её или может не делать ничего. Примечательным исключением является Visual Studio, где эта операция отбрасывает необработанные входные данные при вызове со стандартным входным потоком.
Пример
Демонстрирует использование входного потока
sync()
с файловым вводом. Обратите внимание, что вывод здесь определяется реализацией, поскольку вызовы
std::basic_filebuf::sync
для операций чтения определяются реализацией.
#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'; }
Возможный вывод:
Reading from the file abc Reading from the file, with sync() a23
Отчеты о дефектах
Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применяется к | Поведение как опубликовано | Корректное поведение |
|---|---|---|---|
| LWG 62 | C++98 |
sync()
возвращал
traits
::
eof
(
)
если
rdbuf
(
)
-
>
pubsync
(
)
возвращает
-
1
|
возвращает - 1 в этом случае |
Смотрите также
|
[virtual]
|
синхронизирует буферы с ассоциированной последовательностью символов
(виртуальная защищенная функция-член
std::basic_streambuf<CharT,Traits>
)
|
|
синхронизирует с базовым устройством хранения
(публичная функция-член
std::basic_ostream<CharT,Traits>
)
|