boost::spirit::qi
'u kullanarak, yerleşik ayrıştırıcılardan oluşan bir akışı ayrıştırmak için başarıyla kullanıyorum (örneğin, byte_
, little_word
, vb.). Ancak, şu anda bu kategorilerden birine girmeyen verileri ayrıştırmam gerekiyor. Örneğin, 16.16 sabit nokta ikili sayısının bir çifte dönüştürülmesini istiyorum; Örneğin. Bu nedenle little_word << little_16p16
, uint16_t
'u ve ardından double
'u (sabit nokta numarasından ayrıştırmalar) ayrıştırır.İkili ayrıştırma sırasında öznitelik türünü değiştir :: spirit
İlk olarak anlamsal eylemleri düşündüm, ancak (sanırım ...) uygun olmadıklarını çünkü bir ayrıştırıcıyla ilişkilendirilen özniteliğin türünü değiştirmediklerini düşünüyorum. boost::fusion
tarafından sağlanan örtülü yayınlara dayandığı için bu duruma employee struct-parsing example'u nasıl uyarlayacağımı da anlayamıyorum. Bu yaklaşım burada çalışmaz çünkü açık bir şekilde uint32_t
'dan double
'a bir örtük yayın tanımlayamıyorum, büyük sorunlara neden olmadan.
Benim eğim, yerleşik olmayan ikili ilkel ayrıştırıcıları sarmak için terminal olmayanları eklemem veya sıfırdan bir uç çözümleyici yazmam gerektiğidir. qi_binary.hpp
kaynağına baktıktan sonra bile, nasıl yapılacağından emin değilim. Başlamak için bazı örnek kodlar verebilir ve/veya ilgili referanslara yönlendirebilir miyim?
Teşekkürler! Örnek kodunuzu 'ascii :: space_type' şablon parametresini kaldırarak ve uygun işleç() işlevini kullanarak tam olarak istediğimi yapabildim. –