myfile
은 istream
입니다. 읽을 때
read()
파일 포인터를 이동 할 때마다 당신이 예제로 제공 한 루프가 덮어
seek()
너무 필요가 없습니다 :이 경우 ,이 작동 정확히 방법이 아니다 : 당신은 이런 식으로 뭔가를 시도해야 하나
는 IT와 아무것도하지 않고 chunck 읽을 때마다 버퍼
또는 같은
char buf[100];
int bufSize = 100;
while(!myfile.eof()){
myfile.read(buf, bufSize);
// do something with your chunck here.
}
는 :
char * theWholeFile;
int pos = 0;
int chunckSize = 100;
theWholeFile = new char[myfile.tellg()];
while(!myfile.eof()){
myfile.read(theWholeFile + pos, chunckSize);
pos += chunckSize;
}
// theWholeFile contains the whole file at that point. Don't forget to delete it at some point!
여기 마지막 chunck을 처리하지 않았다. 크기는 0에서 100 사이의 값이 될 수 있습니다. myfile.tellg() % chunckSize
을 사용하여 실제 크기를 확인할 수 있습니다 (예 :).
자세한 내용은 related question on Stack Overflow을 참조하십시오.
'seekg'를 사용할 필요조차 없으며, 파일에서 읽을 때 커서 위치가 앞으로 나아갑니다. '0'~ '99'(100 바이트)를 읽으면 커서는 이미 '100'위치에서 끝납니다. – Nbr44
그럼 마지막 두 줄은 필요 없습니다. @ Nbr44 –
정확합니다. 루프에'myfile.read (buf, 100)'만 쓰면,'100' 바이트 뒤의'100' 바이트를 제대로 읽을 수 있습니다 (물론,'435 '파일의 바이트 수, 마지막으로 읽은 크기는'35'입니다). – Nbr44