这是一个我希望能够轻松回答的简单问题,文件流读写操作是否会移动指针?举个例子:
cpos=10000;
for (i=0;i<20;i++) {
dataFile.seekg(cpos+i,ios::beg);
dataFile.read(carray[i],1);
}
它(逻辑上)是否等同于:
dataFile.seekg(cpos,ios::beg);
cpos=10000;
for (i=0;i<20;i++) {
dataFile.read(carray[i],1);
}
换句话说,无论使用哪种方法, carray[] 是否包含相同的内容(我看不到第一种方法有效,所以我希望正确的答案是肯定的)。如果是这样,写操作是否表现出相同的行为?
是的,这就是它的工作原理。不过,你的例子并不完全相同。第一个示例从 10000 读取,然后读取 10001,然后读取 10002,依此类推。第二个示例需要在循环外进行查找以设置初始位置。要 100% 等效,您需要使第二个示例如下所示:
cpos=10000;
dataFile.seekg(cpos,ios::beg);
for (i=0;i<20;i++) {
dataFile.read(carray[i],1);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)