Namespaces
Variants

std::basic_filebuf<CharT,Traits>:: overflow

From cppreference.net
protected :
virtual int_type overflow ( int_type ch = Traits :: eof ( ) ) ;

プット領域から関連する文字シーケンス(ファイル)にデータを書き込みます。

基底クラスのバージョン std::basic_streambuf::overflow() と同様に動作しますが、「文字を消費する」動作は以下のように定義される点が異なります:

1) まず、設定されたロケールの std::codecvt::out を使用して、文字を外部(マルチバイトの可能性あり)表現に変換し、一時バッファに格納します。手順は以下の通りです( XSIZE は未指定のバッファサイズ):
const std::codecvt<CharT, char, typename Traits::state_type>& a_codecvt =
    std::use_facet<std::codecvt<CharT, char, typename Traits::state_type>>(getloc());
typename Traits::state_type state;
CharT* end;
char xbuf[XSIZE];
char* xbuf_end;
std::codecvt_base::result r =
    a_codecvt.out(state, pbase(), pptr(), end, xbuf, xbuf + XSIZE, xbuf_end);
2) 次に、バッファから完全に変換されたすべての文字をファイルに書き込みます。形式的には、 r の値に基づいて以下の手順を実行します:
r 操作
std:: codecvt_base :: ok [ xbuf , xbuf_end ) の文字をファイルに出力し、出力が失敗した場合は失敗します。この時点で pbase ( ) ! = pptr ( ) かつ pbase ( ) == end が両方とも true の場合(これは xbuf が1つの外部文字にも十分な大きさでないことを意味します)、 XSIZE を増やして最初から繰り返します。
std:: codecvt_base :: partial [ xbuf , xbuf_end ) の変換済み外部文字をファイルに出力し、 [ end , pptr ( ) ) に残っている未変換内部文字を使用して繰り返します。出力が失敗した場合は(繰り返さずに)失敗します。
std:: codecvt_base :: noconv [ pbase ( ) , pptr ( ) ) の文字をファイルに出力します。
std:: codecvt_base :: error 失敗します。
関連付けられたファイルが開かれていない場合( is_open() false を返す)、出力は常に失敗します。
(since C++26)

目次

パラメータ

ch - 格納する文字

戻り値

Traits :: not_eof ( ch ) 成功を示すか、 Traits :: eof ( ) 失敗を示すために使用されます。

注記

a_codecvt. always_noconv ( ) true を返す場合、 a_codecvt. out ( ) の呼び出しは省略される可能性があります。

関連項目

[virtual]
出力領域から関連付けられた出力シーケンスへ文字を書き込む
( std::basic_streambuf<CharT,Traits> の仮想保護メンバ関数)
[virtual]
関連付けられたファイルから読み込む
(仮想保護メンバ関数)