[解決済み】streambuf::xsgetnと状態フラグ
2022-02-17 18:01:43
質問
保護された仮想メンバー関数
streambuf::xsgetn
を抽出する関数を定義することができます。
n
の文字を入力ストリームから取り出し、バッファに格納する。
通常、以下のようなほとんどの標準的なストリームでは
fstream
この関数は、単に
{コード
までのループで
{コード
{コード
が返されます。 しかし、カスタムのストリームクラスはこの関数をオーバーライドして、データを出力バッファに一括コピーするなど、より効率的な処理を行うことができます。
しかし、私が理解していないのは、どのようにして
sbumpc
EOF 条件に達したことを示すために取得します。 ユーザーが100バイトの読み込みを要求し、ストリームには50バイトしか残っていないとする。 おそらく
{コード
は、50バイトを読み込んで
{コード
に設定し、内部ストリームの状態を
eof
.
ただし
xsgetn
のメンバー関数です。
xsgetn
そして、それはストリームの状態を設定する方法を持ちません。 また
50
を返すことができます。
eof
は、EOF条件を処理することになっているのでしょうか?
どのように解決するのですか?
libstdc++で見つけたものです。
xsget
抽出された文字が要求された文字数より少ない場合、この関数は
streambuf
を実行し、さらに文字を取得する。もしその関数が
sbumpc
の場合、単に0文字が抽出されたか否かを返す。関数呼び出しの結果は、ストリーム状態にアクセスできる上位のストリーム操作によってピックアップされ、それに応じて設定されます。
関連
-
[解決済み】C++エラー。アーキテクチャ x86_64 に対して未定義のシンボル
-
[解決済み】非静的メンバ関数への参照を呼び出す必要がある
-
[解決済み】Enterキーを押して続行する
-
[解決済み】std::cin.getline( ) vs. std::cin
-
[解決済み】演算子のオーバーロード C++; <<操作のパラメータが多すぎる
-
[解決済み】デバッグアサーションに失敗しました
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み] static_cast, dynamic_cast, const_cast, reinterpret_cast はいつ使うべきですか?
-
[解決済み] コピーアンドスワップ慣用句とは?
-
[解決済み] スマートポインターとは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++エラー。アーキテクチャ x86_64 に対して未定義のシンボル
-
[解決済み] error: 'if' の前に unqualified-id を期待した。
-
[解決済み】関数名の前に期待されるイニシャライザー
-
[解決済み] 非常に基本的なC++プログラムの問題 - バイナリ式への無効なオペランド
-
[解決済み】デバッグアサーションに失敗しました。C++のベクトル添え字が範囲外
-
[解決済み】C++プログラムでのコンソールの一時停止
-
[解決済み】1つ以上の多重定義されたシンボルが見つかる
-
[解決済み】標準ライブラリにstd::endlに相当するタブはあるか?
-
[解決済み】Visual Studioのデバッガーエラー。プログラムを開始できません 指定されたファイルが見つかりません
-
[解決済み】'std::cout'への未定義の参照