fstream读/写移动文件指针

mle*_*s54 5 c++ fstream

这是一个简单的问题,我希望可以轻松回答,文件流读写操作是否可以移动指针?举个例子:

cpos=10000;
for (i=0;i<20;i++) {
   dataFile.seekg(cpos+i,ios::beg);
   dataFile.read(carray[i],1);
}
Run Code Online (Sandbox Code Playgroud)

它(逻辑上)是否相同:

dataFile.seekg(cpos,ios::beg);    
cpos=10000;
for (i=0;i<20;i++) {
    dataFile.read(carray[i],1);
}
Run Code Online (Sandbox Code Playgroud)

换句话说,无论使用哪种方法,carray []都包含相同的内容(我看不出第一种方法是有效的,所以我希望正确的答案是肯定的).如果是这样,写操作表现出相同的行为吗?

Car*_*rum 5

是的,这就是它的工作方式.但是,你的例子并不完全相同.您的第一个示例从10000,然后是10001,然后是10002等读取.第二个示例需要在循环外部进行搜索以设置初始位置.为了100%等效,你需要让你的第二个例子看起来像:

cpos=10000;
dataFile.seekg(cpos,ios::beg);
for (i=0;i<20;i++) {
   dataFile.read(carray[i],1);
}
Run Code Online (Sandbox Code Playgroud)