什么是streamize,streamoff和其他流相关数据类型的实际类型

时间:2016-03-08 06:46:14

标签: c++ stream fstream

当我想找出streamsize的实际数据类型时,cpp引用说

  

键入以表示流中的大小和字符数。

     

它是一个基本有符号整数类型的typedef。

     

可以转换为/从streamoff转换。

让我感到困惑,其他类型的解释如streamoff,streampos,fpos也是如此。

2 个答案:

答案 0 :(得分:2)

术语“整数类型”表示它们是“某种整数类型”,但不一定是intsigned意味着他们既可以是积极的,也可以是消极的。对于大小具有有符号值的原因是streamoff和类型,它可以是文件中的前向(正向)和向后(负向) - 当您想要重新读取文件中的内容时,你寻找相对于当前位置和负偏移。

当然,尺寸本身不会是负面的。

答案 1 :(得分:0)

积分类型意味着它们可以是int,unsigned int,long,unsigned long等等。它取决于你的机器和编译器。例如,在我的机器中:win7 64,vs2013 win32 Debug。
cout << sizeof(streamsize) << endl; cout << sizeof(streamoff) << endl; 是8,8.在其他环境中,可能会有所不同。