- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想为我自己的类型创建一个自定义的 char_traits
类。我已经声明了所有函数,但我对标准中给出的模糊语义有些困惑。
fpos_type
、off_type
和 state_type
应该做什么?哪里需要它们(如果有的话)?
标准表示要将 traits::eof()
和有效代码点分开,因此要求使用大于 的
。但是我可以将我的 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
用作 seek 函数的参数,是 tell 函数返回的类型。它是一种表示绝对位置的类型。 off_type
在搜索函数的重载中用于指定从提供的文件位置的偏移量。
state_type
也在 std::char_traits
中定义。用于指定多字节序列的转换状态。
您可以在[char.traits.require]
中查找这些类型的所有要求。
这是 traits::int_type
的定义 - [char.traits.typedef]
typedef INT_T int_type
For a certain character container type
char_type
, a related container typeINT_T
shall be a type or class which can represent all of the valid characters converted from the correspondingchar_type
values, as well as an end-of-file value,eof()
. The typeint_type
represents a character container type which can hold end-of-file to be used as a return type of the iostream class member functions.
这个定义意味着 int_type
只能表示 char_type
类型的值,还有 eof()
值(value)。除了它为 std::char_traits
关于c++ - 如何为我自己的类型声明自定义 char_traits<>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21391875/
我想为我自己的类型创建一个自定义的 char_traits 类。我已经声明了所有函数,但我对标准中给出的模糊语义有些困惑。 fpos_type、off_type 和 state_type 应该做什么?
我正在学习 c++ 字符串中使用的 std::char_traits,然后我意识到 std::char_traits 可用于创建自定义字符串类,如 cplusplus.com's article 中的
考虑以下程序: #include #include #include int main(int, char **) { std::basic_stringstream stream; s
void assign(char_type& to, char_type from); 为什么不能只使用赋值运算符而不是使用 this function ?这是干什么用的? 最佳答案 实际上每次使用
根据GCC 8 Release Note ,现在可以使用 std::char_traits和 std::char_traits在常量表达式中: Improved experimental suppor
问题How to use correctly the return value from std::cin.get() and std::cin.peek() ?让我想知道是否可以保证 std::ch
在 C++ 中运行代码时,我收到错误 no operator "="matches these operands operand types are std::basic_ostream> = int
两者是等价的,因为它们返回空终止字符序列的长度。有没有理由偏爱其中之一? 最佳答案 使用更简单的替代方法。 std::char_traits::length 非常好,但是对于 C 字符串,它相同并且是
我有这个错误。 no viable conversion from returned value of type 'basic_istream >' to function return
我有一个带有字符串转换运算符的 Foobar 类: #include class Foobar { public: Foobar(); Foobar(const Foobar&);
来自 the answer ,我学会了std::string只是 std::basic_string, std::allocator> 的 typedef , 模板参数替换不考虑用户定义的转换,因此编
我正在尝试使运算符重载 >> 我想从输入中读取每个字符,但我收到了该错误。这是代码: istream& operator>>(istream& input, Natural_Big_Number nu
我在电子表格 obj 中有一堆对: std::stack > undoStack; 我正在尝试弹出堆栈并将其分配给另一对: std::pair change = spreadsheets.at(i).
我正在尝试编写一个程序,要求用户输入文件名,然后打开该文件。当我编译它时,出现以下错误: no matching function for call to std::basic_ofstream >:
There are already questions在 Stackoverflow 上询问 为什么 basic_fstream不起作用。答案说char_traits仅专门用于 char和 wchar
在我一直在做的项目中,我们必须将 Cocoa 通知从 C++ 子项目发送到它上面的主项目。为此,我们构建了一个映射来充当通知的 userInfo 字典的键值存储。 在其中一个项目中,以下代码编译得很好
error: no match for operator >(*&std::cout),((const char*) #include using namespace std; int Contar
我正在学习C++并正在学习教程,但是在入门代码中构建代码时遇到了问题。 这是引发此错误的源代码文件。 #include "linux_parser.h" #include #include #in
error C2440: 'initializing': cannot convert from 'TCHAR [260]' to 'std::basic_string,std::allocator>
首先。我想说,我不是 C++ 程序员。outlook 字符串在 visual studio 2015 中生成错误,并显示标题中的消息。 HWND windowHandle = (HWND)FindPr
我是一名优秀的程序员,十分优秀!