양방향 반복기/어댑터가있는 입력 파일 스트림이 필요합니다.파일/ifstream의 양방향 반복기
불행히도 std::ifstream
(및 이와 유사한)은 역방향으로 진행할 수없는 순방향 반복기의 일종 인 std::istream_iterator
에서만 사용할 수 있습니다. (아니면 내가 여기 오인입니까?)
전체 파일을 메모리에로드 한 다음 배열에 대해 훨씬 더 강력한 임의 액세스 반복기를 사용할 수 있습니다. 그러나 나는 그것을 피하고, 내가 정말로 필요로하는만큼 많이 읽고 싶다. 정말 파일의 일부만 필요로 할 수도 있습니다.
나는 C stdio.h
함수를 사용하여 수동으로 할 수 있지만 고통 스러울 것입니다. 나는 기본적으로 모든 명세를 염두에두고 직접 양방향 반복기를 구현해야한다.
iostream 라이브러리를 향상시키는 방법을 고려하고 있지만 설명서가 다소 압도적인데 누군가가이 특별한 목표를 달성하기 위해 나에게 도움이되기를 바랍니다. 아니면 내가 필요로하는 것을 수행하기 위해 이미 기존의 다른 라이브러리가 있습니까?
내 파일을 구문 분석하기위한 boost xpressive 라이브러리의 반복기가 필요합니다. 반복기가 증가하고 감소 할 것으로 예상됩니다. 이것이 요구 사항은 아니지만, 내가 읽고있는 파일이 버퍼링되면 괜찮을 것입니다.
아이디어가 있으십니까? 감사합니다.
양방향 반복기가 필요합니까? forward iterator로 충분하다면, [Boost.Spirit] (http://www.boost.org/libs/spirit/)에서 다뤘습니다 : [라이브러리 지원 -> 다중 패스 반복자] (http : //www.boost .org/libs/spirit/doc/html/spirit/support/multi_pass.html). – ildjarn
파일의 일부를 버퍼링하고, 작업을 수행하고, 임시 파일에 기록한 다음 파일의 다음 부분을 가져올 수 있습니까? –
나는 당신이 단지 파일을 메모리 맵핑 할 수 없습니까? 덜 휴대 가능하지만 물론 랜덤 액세스를 제공합니다 * 그리고 * 당신이 정말로 필요로하는 파일의 부분 만 읽습니다. (글쎄, 일부 페이지 크기로 반올림 한 부분들). –