1

char_traits独自の型のカスタム クラスを作成したいと考えています。すべての関数を宣言しましたが、標準で提供されているあいまいなセマンティクスに関して混乱しています。

  1. とは何をfpos_typeすることが期待されていますか? 必要な場合はどこで必要ですか?off_typestate_type

  2. 標準では、traits::eof()と 有効なコード ポイントを分けて保持するように指示されているため、int_typeよりも大きいを使用するよう求められますchar_type。しかし、char_type有効なコードポイントが負でない範囲にあることがわかっている場合、署名付きの数値として作成できますか。の可能な値として負の値が残りますtraits::eof()。それとも、 の値を取ることができないようint_typeに、 の適切なスーパーセットである必要がありますか? もっと要点を言えば、同じにできますか?char_typechar_typeeof()int_typechar_type

4

1 に答える 1

0
  1. std::fposファイル ストリームのファイル ポジショニング セマンティクスをカプセル化するクラスです。現在の変換状態を使用して、ファイルの位置を識別します。off_typeとは、それぞれオフセット タイプと位置タイプのタイプである でpos_type定義されたタイプです。シーク関数の引数として使用され、tell 関数から返される型です。絶対位置を表す型です。指定されたファイル位置からのオフセットを指定するために、シーク関数のオーバーロードで使用されます。std::char_traitspos_typeoff_type

    state_typeにも定義されていstd::char_traitsます。マルチバイトシーケンスの変換状態を指定するために使用されます。

    これらのタイプのすべての要件については、 を参照してください[char.traits.require]

  2. これはの定義ですtraits::int_type-[char.traits.typedef]

    typedef INT_T int_type
    

    特定の文字コンテナ タイプchar_typeの場合、関連するコンテナ タイプは、対応する値から変換されたすべての有効な文字、およびファイルの終わりの値INT_Tを表すことができるタイプまたはクラスでなければなりません。この型は、iostream クラス メンバー関数の戻り値の型として使用されるファイルの終わりを保持できる文字コンテナー型を表します。char_typeeof()int_type

    int_typeこの定義には、単に type の値と値を表すことができるという含意がchar_typeありeof()ます。特定の特殊化のためにどのタイプをエイリアスするかを除いて、タイプのそれ以上の要件を定義しませんstd::char_traits

于 2014-01-30T23:32:52.757 に答える