请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于二进制文件拷贝问题

char temp[BUFFER_LENGTH]
while( !in.eof() )
{
in.read(temp, BUFFER_LENGTH);
…略
}
为什么在这个循环内,in的读操作是按照顺序一块一块来的。并没有指定它的顺序啊,只有循环判断条件。
(我的问题的具体解释:有个文本文件abcdefghijklmn,我将其4个4个读取到内存,在这个循环体内,为什么读操作可以按照顺序的4个4个读取,并没有指定读取的移动,难道不应该是始终只读取前4个如:abcd么?)

正在回答 回答被采纳积分+3

1回答

quickzhao 2021-06-07 23:20:57

不是,文件和IO是以流的形式往前走的,你可以想象成水流朝一个方向前进,直到到水的尽头。简单来说你没有指定顺序,但是C++文件系统会控制当前文件指针的位置和方向。

0 回复 有任何疑惑可以回复我~
  • 提问者 饿少 #1
    那是不是可以这样理解:在当前程序里,除非读到文件末尾,不然每次read都是上一次读的末尾位置。
    回复 有任何疑惑可以回复我~ 2021-06-08 07:42:56
  • quickzhao 回复 提问者 饿少 #2
    可以通过seek等方式调整读取文件的位置,否则会接着上一次位置往下读,直到文件尾部。
    回复 有任何疑惑可以回复我~ 2021-06-08 15:16:13
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信