2010-11-28 7 views
9

플랫폼 독립적 인 바이너리 파일 I/O를위한 작은 C 또는 C++ 라이브러리를 몇 달 동안 찾았습니다. 즉, 엔디안 스와핑과 고정 크기 유형을 의미합니다. .플랫폼 독립적 인 바이너리 파일 I/O를위한 C/C++ 라이브러리

나는 wxWidgets 및 Qt와 같은 거대한 라이브러리가 있으며, Java 및 C#과 같은 언어에도이 라이브러리가 있지만 거대한 프레임 워크 대신 작은 라이브러리를 사용하는 것을 선호한다는 것을 알고 있습니다.

+0

오, 7 년이 넘었습니다 ... 찾았습니까? – kbec

답변

3

Google Protocol Buffers은 어떻습니까?

라이브러리에는 C++, Java 및 Python의 바인딩이 포함되어 있습니다.

1

왜 모든 C++ 컴파일러와 함께 제공되는 fstream을 사용하지 않는가? ios :: binary 플래그를 설정하고 sizeof를 많이 사용하여 OS 독립적으로 만듭니다. 예컨대 : http://courses.cs.vt.edu/~cs2604/fall02/binio.html

+1

필자의 경험에 비추어 볼 때, fstream을 사용하면 플랫폼 종속적 인 것들을 다루지 않고도 매우 지저분해진다 (길고 반복적 인 행, 많은 캐스트). – testtesttes

+1

바이너리 입력 IMO를 변환 할 필요가 없습니다. 여기에 std 라이브러리로 이동하십시오. – rubenvb

+2

엉덩이에 엄청난 고통이 있기 때문에, int에 캐스팅과 같은 역겨운 해킹에 의지하지 않고 바이너리에서도 작동하지 않습니다. – MarcusJ

3

http://www.codersource.net/c/c-tutorial-on-file-operations/c-file-i-o-binary-files-using-fstream.aspx 그것의 목표 Boost.Serialization

하나에서 보라는 "데이터 이식성 - 하나 개의 플랫폼에서 생성 된 바이트 스트림은 다른에 읽을 수 있어야한다"입니다.

비슷한 기능을 제공하는 다른 라이브러리에 대한 링크가 있습니다. 내가 SQLite는 사용하는 것을 선호 대부분의 파일 형식으로 작업

+10

와우! I/O를위한 * 작은 * 라이브러리의 완벽한 예 :) – valdo

1

는 : http://www.sqlite.org/ 시원한 것은 당신이 운영 시스템에서 프로그래밍 언어 장치를 동일한 데이터 파일에 액세스 할 수 있습니다.

+0

SQLite는 voxel 볼륨과 같은 데이터 유형을 저장하는 데 유용하지 않습니다. –

관련 문제