2014-10-10 3 views
0

boost::iostreams::mapped_file_source을 사용하여 파일을 메모리에 매핑하고 파일을 읽을 스트림을 boost::iostreams::stream <boost::iostreams::mapped_file_source> streamReader으로 선언했습니다.메모리 매핑 된 파일의 스트림 포인터를 찾는 방법 (부스트 사용)?

괜찮 았는데 메모리 매핑 된 파일을 구문 분석 할 수있었습니다. getline을 사용하여 전체 파일을 읽고 파일에서 특정 오프셋을 저장했습니다. 이 작업을 수행하는 동안 seekg을 사용하여 원하는 위치로 streamReader를 검색 할 수있었습니다. 하지만 일단 전체 파일을 읽으면 어디서나 streamReader를 찾을 수 없습니다.

streamReader.fail()이 true를 반환합니다. streamReader는 파일 끝에 도달하면 포인터를 지우나요?

전체 파일을 읽은 후 원하는 파일 오프셋으로 갈 수있는 방법이 있습니까?

감사합니다는

답변

1

나는 당신의 상태를 다시 스트림의 clear() 메소드를 호출한다고 생각합니다.

http://www.cplusplus.com/reference/ios/ios/clear/

+0

예 ... clear()라고하며 이제는 정상적으로 작동합니다. 그래서 이제는 파일의 끝에 도달 한 후에 failbit이 설정 되었기 때문이라고 생각합니다. John에게 고마워요. – Jackzz