• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

    最終更新日時(UTC):
    が更新

    履歴 編集

    function
    <istream>

    std::basic_istream::sync

    int sync();
    

    概要

    ストリームバッファに対し、同期処理を指示する。

    効果

    1. sentryオブジェクトを構築する。sentryオブジェクトが失敗を示した場合、何もしない。
    2. rdbuf()->pubsync()を呼び出す。ただし、rdbuf()がヌルポインタなら何もしない。
    3. rdbuf()->pubsync()-1を返した場合、setstate(badbit)を呼び出す。

    戻り値

    • 成功した場合0
    • 失敗した場合-1
      • rdbuf()がヌルポインタの場合。
      • rdbuf()->pubsync()-1を返した場合。

    実装例

    int sync() {
      try {
        sentry s(*this, true);
        if (s) {
          if (auto sb = rdbuf()) {
            if (sb->pubsync() != -1) {
              return 0;
            }
            setstate(badbit);
          }
        }
      } catch (...) {
        例外を投げずにbadbitを設定する;
        if ((exceptions() & badbit) != 0) {
          throw;
        }
      }
      return -1;
    }
    

    バージョン

    言語

    • C++98

    参照