如何为自己的类型声明自定义char_traits<>?
How do I declare a custom char_traits<> for my own type?
我想为自己的类型做一个自定义的char_traits
类。我已经宣布了所有功能,但是我对标准中给出的模糊语义感到困惑。
-
期望做什么
fpos_type
,off_type
和state_type
?它们在哪里需要,如果有的话? -
标准说要保持
traits::eof()
和有效的代码点分开,因此要求使用比char_type
大的int_type
。但是,我可以将我的char_type
作为签名数字,其中我知道有效的代码点仅在非负范围内。它使我拥有负值作为traits::eof()
的可能值。还是应该是int_type
应该是char_type
的适当超集,以便没有char_type
可以拿出eof()
的值?更重要的是,我可以使int_type
和char_type
相同吗?
-
std::fpos
是一个封装文件流的文件定位语义的类。它使用当前的转换状态来识别文件位置。off_type
和pos_type
是std::char_traits
中定义的类型,分别是偏移类型和位置类型的类型。pos_type
被用作寻求函数的参数,是从告诉功能返回的类型。它是表示绝对位置的类型。off_type
用于Seek功能的过载中,用于从提供的文件位置指定偏移。state_type
也在std::char_traits
中定义。它用于指定多重序列的转换状态。您可以在
[char.traits.require]
中查找这些类型的所有要求。 -
这是
的定义traits::int_type
-[char.traits.typedef]
typedef INT_T int_type
对于某个字符的容器类型
char_type
,相关的容器类型INT_T
应为类型或类,可以代表从相应的char_type
值转换的所有有效字符,以及文件末端值eof()
。类型int_type
代表一个字符容器类型,该类型可以保留文件端以用作iostream类成员函数的返回类型。此定义带有它的含义,即
int_type
仅能表示类型char_type
的值以及eof()
值。它没有针对std::char_traits
的某些专业化类型的类型的其他要求定义其他要求。
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 呼叫运营商<<临时
- 如何防止clang格式在流运算符调用之间添加换行符<<
- <<操作员在下面的行中工作
- 如何将 std::ifstream 转换为 std::basic_istream<CharT, Traits>&?
- 如何显式调用运算符<<
- 模板操作员&lt;未打电话
- C / CUDA中的模板方法是3个角括号(&lt;&lt;&lt;)
- C - 创建矢量&lt; vector&lt; double&gt;&gt;矩阵具有分配而不是inizializ
- 错误:调用"std::vector<:vector<int>>::p ush_back(std::vector<std::__cxx11::basic_string<
- C 建造者Clang STD :: Sill,找不到超载的操作员&lt;
- 为什么STD :: MAP需要操作员&lt;以及我如何写一个
- 为什么“操作员”需要const但不是为“运营商&lt;”
- cv::D ataType<> 与 cv::traits::Type<>
- 为什么将此对向量&lt; map&lt; int,int&gt;&gt;中的地图进行更新.失败
- C :对矢量进行排序&lt; struct&gt;(结构有2个整数)基于结构的整数之一
- 明确的专业化“ CheckIntmap&lt;&gt;”实例化
- 什么是模板&lt;&gt;inline bla bla
- 左角支架解释为操作员&lt;而不是模板参数
- 编辑C Qlist&lt; object*&gt; gt;QML代码和一些QML警告中的模型