std::basic_istream<CharT,Traits>:: sync
|
int
sync
(
)
;
|
||
입력 버퍼를 관련 데이터 소스와 동기화합니다.
UnformattedInputFunction 처럼 동작하지만, gcount() 는 영향을 받지 않습니다. sentry 객체를 생성하고 검사한 후에,
만약 rdbuf() 가 널 포인터라면, - 1 을 반환합니다.
그렇지 않으면 rdbuf ( ) - > pubsync ( ) 를 호출합니다. 해당 함수가 - 1 를 반환하면 setstate ( badbit ) 를 호출하고 - 1 를 반환합니다. 그렇지 않으면 0 를 반환합니다.
목차 |
매개변수
(없음)
반환값
0 성공 시, - 1 실패 시 또는 스트림이 이 작업을 지원하지 않는 경우(버퍼링되지 않은 스트림).
참고 사항
readsome()
와 마찬가지로, 이 함수가 라이브러리에서 제공하는 스트림에 대해 어떤 작업을 수행하는지는 구현에 따라 정의됩니다. 일반적인 의도는 스트림 버퍼가 마지막으로 get 영역을 채운 이후 관련 입력 시퀀스에 가해진 변경 사항을 다음 읽기 작업이 선택하도록 하는 것입니다. 이를 달성하기 위해
sync()
는 get 영역을 비울 수도 있고, 다시 채울 수도 있으며, 아무 작업도 하지 않을 수도 있습니다. 주목할 만한 예외는 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>
의
virtual protected member function)
|
|
기본 저장 장치와 동기화합니다
(
std::basic_ostream<CharT,Traits>
의
public member function)
|