名前空間
変種
操作

std::iostream_category

From cppreference.com
< cpp‎ | io
 
 
入出力ライブラリ
I/Oマニピュレータ
出力関数 (C++23)
C形式I/O
バッファ
(C++98/26*)
ストリーム
抽象化
ファイルI/O
文字列I/O
配列I/O
(C++98/26*)
(C++98/26*)
(C++98/26*)
同期出力
エラーカテゴリインターフェース
iostream_category
(C++11)
(C++11)
 
ヘッダ<ios>で定義
const std::error_category& iostream_category() noexcept;
(C++11以降)

iostreamエラーのための静的なエラーカテゴリオブジェクトへの参照を取得します。このオブジェクトは、仮想関数 error_category::name() をオーバーライドして、文字列 "iostream" へのポインタを返す必要があります。これは、std::ios_base::failure 型の例外で提供されるエラーコードを識別するために使用されます。

目次

[編集] パラメータ

(なし)

[編集] 戻り値

std::error_category から派生した、未指定の実行時型の静的オブジェクトへの参照。

[編集]

#include <fstream>
#include <iostream>
 
int main()
{
    std::ifstream f("doesn't exist");
    try
    {
        f.exceptions(f.failbit);
    }
    catch (const std::ios_base::failure& e)
    {
        std::cout << "Caught an ios_base::failure.\n"
                  << "Error code: " << e.code().value() 
                  << " (" << e.code().message() << ")\n"
                  << "Error category: " << e.code().category().name() << '\n';
 
    }
}

実行結果の例

Caught an ios_base::failure.
Error code: 1 (unspecified iostream_category error)
Error category: iostream

[編集] 不具合報告

以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。

DR 適用対象 公開された動作 正しい動作
LWG 2087 C++11 iostream_categorynoexcept として宣言されていませんでした noexcept として宣言された

[編集] 関連項目

ストリーム例外
(std::ios_base の public メンバクラス) [編集]
(C++11)
IOストリームのエラーコード
(enum) [編集]
English 日本語 中文(简体) 中文(繁體)