C++ 如何为自己的类型声明自定义字符?

C++ 如何为自己的类型声明自定义字符?,c++,iostream,streambuf,C++,Iostream,Streambuf,我想为我自己的类型创建一个自定义的char_traits类。我已经声明了所有函数,但是对于标准中给出的模糊语义,我感到有些困惑 FPO_类型、off_类型和state_类型的预期用途是什么?如果有的话,在哪里需要它们 标准要求将traits::eof和有效代码点分开,因此要求使用大于char_类型的int_类型。但是,如果我知道有效代码点仅在非负范围内,那么我可以将我的字符类型设置为有符号的数字吗。它给我留下了负值作为traits::eof的可能值。或者int_类型应该是char_类型的适当超集

我想为我自己的类型创建一个自定义的char_traits类。我已经声明了所有函数,但是对于标准中给出的模糊语义,我感到有些困惑

FPO_类型、off_类型和state_类型的预期用途是什么?如果有的话,在哪里需要它们

标准要求将traits::eof和有效代码点分开,因此要求使用大于char_类型的int_类型。但是,如果我知道有效代码点仅在非负范围内,那么我可以将我的字符类型设置为有符号的数字吗。它给我留下了负值作为traits::eof的可能值。或者int_类型应该是char_类型的适当超集,这样就没有char_类型可以接受eof的值?更重要的是,我可以使int_类型和char_类型相同吗

fpos是一个封装文件流的文件定位语义的类。它使用当前转换状态来标识文件位置。off_type和pos_type是std::char_traits中定义的类型,分别是偏移类型和位置类型的类型。pos_type用作seek函数的参数,是tell函数返回的类型。它是一种表示绝对位置的类型。off_type用于seek函数的重载中,用于指定从提供的文件位置的偏移量

状态类型也在std::char\u traits中定义。它用于指定多字节序列的转换状态

您可以在[char.traits.require]中查找这些类型的所有需求

这是traits::int_type-[char.traits.typedef]的定义

对于某个字符容器类型char_type,相关的容器类型INT_T应是一个类型或类,它可以表示从相应char_type值转换而来的所有有效字符,以及文件结束值eof。int_类型表示一种字符容器类型,它可以保存要用作iostream类成员函数的返回类型的文件结尾

这个定义意味着int_type只能表示char_type类型的值,也可以表示eof值。除了为std::char_traits的某些专门化定义别名类型之外,它没有定义对类型的进一步要求

typedef INT_T int_type