首页 > 编程知识 正文

ifstream读取文件,ifstream读取二进制文件

时间:2023-05-05 07:34:07 阅读:57471 作者:1963

尝试获取文件大小时,有以下块用于测试seekg和tellg的行为:

int size=0;

ifstreamin(filename.c_str (,ifstream 33603360 in|ifstream 33603360 binary );

是if(in )

{

in.seekg(0,ifstream:end;

size=in.tellg (;

cout endl;

cout endl;

cout ' * * * * * * * * size stream1* * *=' size endl;

in.seekg(0,ios:end;

size=in.tellg (;

cout ' * * * * * * * * size stream2* * *=' size endl;

in.seekg(0,ios:end;

size=in.tellg (;

cout ' * * * * * * * * size stream3* * *=' size endl;

in.seekg(100,ios:end;

size=in.tellg (;

cout ' * * * * * * * * size stream4* * *=' size endl;

in.seekg(0,ios:beg );

size=in.tellg (;

cout ' * * * * * * * * size stream5* * *=' size endl;

in.seekg(100;

in.seekg(0,ios:end;

size=in.tellg (;

cout ' * * * * * * * * size stream6* * *=' size endl;

in.seekg(100;

in.seekg(0,ios:cur;

size=in.tellg (;

cout ' * * * * * * * * size stream7* * *=' size endl;

in.seekg(-100,ios:end );

size=in.tellg (;

cout ' * * * * * * * * size stream8* * *=' size endl;

in.seekg(IOs:Beg,ios:end );

size=in.tellg (;

cout ' * * * * * * * * size stream9* * *=' size endl;

in.seekg(IOs:3360Beg;

in.seekg(IOs:3360end;

size=in.tellg (;

cout ' * * * * * * * * size stream 10 * * *=' size endl;

cout endl;

cout endl;

}

其结果如下。

*******sizestream1***=1846

*******sizestream2***=1846

*******sizestream3***=1846

*******sizestream4***=1946

*******sizestream5***=0

*******sizestream6***=1846

*******sizestream7***=100

*******sizestream8***=1746

*******sizestream9***=1846

*******sizestream10***=2

我的问题如下:

tellg会返回最后一个seekg找到的字节吗?

为什么stream5的结果是0? 以前的位置是文件的最后。

seekg是否总是从文件的开头开始,如stream5所示?

如stream5所示,seekg不能后退吗?

seekg的第一个参数是什么意思? 这表示这是第二个参数的偏移。 如果为正值,则似乎超出了第二个参数所指的位置,如stream4所示。

如果想知道前100字节之后的大小,是否需要使用-100,如stream8所示?

为什么stream10是2?

ofstream中

seekp和tellp的属性是seekg和tellg吗?

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。