2010-11-28 7 views
9

J'ai essayé pendant des mois de trouver une petite bibliothèque C ou C++ pour les E/S de fichiers binaires indépendantes de la plate-forme, ce qui signifie l'endian swapping et les types de taille fixe . Je sais que d'énormes bibliothèques comme wxWidgets et Qt les ont, et que des langages comme Java et C# les ont aussi, mais je préférerais utiliser une petite bibliothèque au lieu d'un énorme framework.Bibliothèque C/C++ pour E/S de fichier binaire indépendant de la plate-forme

+0

Oh, plus de 7 ans ont passé ... Avez-vous trouvé? – kbec

Répondre

3

Que diriez-vous de Google Protocol Buffers?

La bibliothèque inclut des liaisons pour C++, Java et Python.

1

Pourquoi ne pas simplement utiliser fstream qui est livré avec tous les compilateurs C++. Vous venez de définir le drapeau ios :: binary et utilisez abondamment sizeof pour le rendre indépendant du système d'exploitation. .: http://courses.cs.vt.edu/~cs2604/fall02/binio.html et par exemple http://www.codersource.net/c/c-tutorial-on-file-operations/c-file-i-o-binary-files-using-fstream.aspx

+1

Dans mon expérience, l'utilisation de fstream devient très salissante (lignes longues et répétitives, beaucoup de moulages), même sans manipuler des trucs dépendant de la plate-forme. – testtesttes

+1

Pas besoin de traduire l'entrée binaire IMO. Allez juste la bibliothèque standard ici. – rubenvb

+2

Parce que c'est une énorme douleur dans le cul, et ne fonctionne même pas avec binaire sans avoir recours à des hacks dégoûtants comme couler l'int à un char ... – MarcusJ

3

Jetez un oeil à Boost.Serialization

l'un de ses objectifs est « portabilité des données - flux d'octets créés sur une plate-forme doit être lisible sur tout autre. »

Il existe également des liens vers d'autres bibliothèques offrant des fonctionnalités similaires.

+10

Wow! quel parfait exemple de bibliothèque * minuscule * pour les E/S :) – valdo

1

Pour le travail le plus format de fichier que je préfère utiliser SQLite: http://www.sqlite.org/ la chose est cool, vous pouvez accéder au même fichier de données à travers les systèmes d'exploitation et les langages de programmation et périphériques.

+0

SQLite n'est pas utile pour stocker le type de données comme les volumes de voxels –

Questions connexes