Je voudrais donc analyser un fichier binaire et en extraire des données. Le problème que je suis confronté à cela est que j'ai besoin de convertir un flux de char
à un flux de unsigned char
s. lecture de la documentation boost, il semble que boost::iostreams::code_converter
devrait être la solution pour cela, donc j'ai essayé ceci:Utiliser boost :: iostreams pour analyser un octet par octet de fichier binaire
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;
L'idée était de spécifier un codecvt
avec InternalType=uint8_t
et ExternalType=char
. Malheureusement, cela ne compile pas. Donc la question est: comment puis-je convertir un flux de char
à un flux de uint8_t
s?
donc je suppose que l'image plus grande de la question initiale était que je voulais donner boost :: esprit un flux de non signé caractères à analyser. Mettre des static_casts partout dans le code chaque fois que j'essaie de lire quelque chose hors du flux n'est pas viable (mon code ne fait pas toute la lecture). J'ai finalement travaillé sur le problème en supprimant boost :: iostreams et en utilisant simplement les parseurs basés sur l'itérateur de l'esprit. – Zsol