그래서 이진 파일을 구문 분석하고 일부 데이터를 추출하고 싶습니다. 내가 직면 한 문제는 char
스트림을 unsigned char
스트림으로 변환해야한다는 것입니다. 부스트 설명서를 읽기 , boost::iostreams::code_converter
이에 대한 해결책이 될 것을 보인다, 그래서 나는이 시도 :boost :: iostreams를 사용하여 이진 파일을 바이트 단위로 파싱하십시오.
typedef unsigned char uint8_t;
typedef boost::iostreams::stream<boost::iostreams::code_converter<
boost::iostreams::basic_array_source<uint8_t>,
std::codecvt<uint8_t, char, std::mbstate_t> > > array_stream;
array_stream s; //initialized properly in the code
unsigned char asd;
s >> asd;
std::cout << asd << std::endl;
아이디어는 InternalType=uint8_t
와 ExternalType=char
와 codecvt
을 지정했다. 불행히도 이것은 컴파일되지 않습니다. 질문은 다음과 같습니다. char
스트림을 uint8_t
스트림으로 변환하려면 어떻게해야합니까?
그래서 내가 원래 질문의 큰 그림은 내가 부스트 :: 정신을 부호의 스트림을주고 싶다고했다 추측 구문 분석 할 문자. 따라서 스트림에서 무언가를 읽으 려 할 때마다 코드 전체에 static_cast를 두는 것은 실행 가능하지 않습니다 (내 코드가 모든 읽기를 수행하지는 않습니다). 나는 결국 boost :: iostreams를 제거하고 정신에서 파생 된 반복기를 사용하여이 문제를 해결했다. – Zsol