将fpos_t转换为int或char类型
Cast fpos_t to int or char
我正在使用一个函数,该函数使用文件长度的按位操作:fpos_t flen;
当我尝试将其转换为int或char类型,或尝试对其进行算术运算时,它会失败,并产生以下编译错误:error: aggregate value used where an integer was expected
你误用了这个类型。首先,它不表示长度。它表示位置。其次,它只意味着在调用fsetpos
时使用。你不需要对它进行算术运算因为它不一定代表数字类型。它包含库执行fsetpos
操作所需的任何信息。在库的实现中,fpos_t
似乎是一个聚合类型,例如结构体。(你可以检查头文件中的定义来确定,但不要依赖你在那里发现的任何东西;它可能在其他平台或标准库的未来版本中有所不同。
对于你的下一步,考虑问一个更直接的问题,当你想到在fpos_t
上进行按位操作时,如何解决你正在处理的任何问题。
当我试图这样做时,我得到了同样的错误:Char = (Char)flen &15,其中flen是fpost_t。我找到了一个解决方案:http://dsmarkchen.blogspot.com.br/2008/08/fpost.html。应该是:Char = flen。__pos,15 .
听起来您想要使用当前文件位置作为整数。如果是这样,您可能希望使用ftell/fseek(或它们的64位同胞),而不是fgetpos/fsetpos。两者都提供类似的操作,但ftell/fseek使用整数值,而fgetpos/fsetpos使用故意抽象的结构。
相关文章:
- 如何在cpp.中使用协议缓冲区存储大缓冲区/数组(char/int)
- 如何在不强制转换每个参数的情况下删除初始值设定项列表中从 int 到 char 的缩小转换?
- C ++如何在使用"tolower"时将char转换为int
- 在标准中,模板参数的语法在哪里定义,例如,'std::function<int(char)>'?
- 类型为 'std::map< char,int > 的 <Swig 对象的代理
- 声明具有两种类型的变量:"int char"
- 定义.cpp中常数int/char*
- Qt5 对'QApplication::QApplication(int&, char**, int)'的未定义引用
- 将int/char插入数据库
- 从 std::vector 转换为<int> char[] C++
- 为什么INT(char)的比较不起作用
- 使用int+char组合uint8_t
- 为什么这个返回值?C++int/char混淆
- 向量到 int<char> 与向量<wchar_t>到 int
- Evaluate an int, char and int
- 接收错误"no matching function for call to 'getline(std::ifstream&, int&, char)'"
- reinterpret_cast<int*>(char*) vs. static_cast<int*>(static_cast<void*>(char*)) --
- 将类型int(C::*)(int, char)转换为类型int(int, char)
- 如何添加多位数的int和char,其中输出为int+char
- 是int, char也是抽象数据类型