क्या std::streambuf
है-बहु-बाइट मानों को नेटवर्क-बाइट ऑर्डर में परिवर्तित करने के लिए तंत्र की तरह? विशेष रूप से, बूस्ट एशियाई इतनी आदिम पेशकश करता है? यहाँ मैं धारा बफर करना चाहते हैं क्या का एक उदाहरण है:क्या कोई std :: streambuf संस्करण है जो मेजबान को नेटवर्क बाइट ऑर्डर में परिवर्तित करता है?
uint64_t x = 42ull;
network_streambuf b1;
std::ostream os(&b1);
os << 42ull; // htonll
network_streambuf b2;
std::istream is(&b2);
uint64_t y;
is >> y; // ntohll
संपादित: जवाब का सुझाव है कि इस समस्या के बारे में सोचना गलत तरीका है: धारा बफ़र्स बस चरित्र दृश्यों के लिए पहुँच प्रदान, उनका काम प्रारूपित I/O या रूपांतरण नहीं करना है। मैं शायद एक छोटी बफर कक्षा लागू करूंगा जो रूपांतरण करने के लिए operator<<
और operator>>
के लिए आवश्यक अधिभार प्रदान करता है।
यदि आपने अपने उदाहरण में 'बी 2' परिभाषित किया है तो आपका प्रश्न अधिक समझदार होगा। इसके अलावा, 'ऑपरेटर << (..., लंबे समय तक हस्ताक्षरित क्यों नहीं होगा) 'htons' का आह्वान करेगा? क्या आप इसे 'htonll' का आह्वान करना पसंद नहीं करेंगे? –
धन्यवाद रॉब, मैंने बग को सही किया। – mavam
मुझे लगता है कि आप गलत जगह पर समाधान की तलाश में हैं। जब तक फॉर्मेटर ('ostream') समाप्त हो गया है, यह 'streambuf' को बाइट्स की धारा पारित कर रहा है। ऐसा लगता है कि आप वास्तव में "बाइनरी" 'ओस्ट्रीम 'चाहते हैं यदि आउटपुट संख्याओं का बाइट ऑर्डर एक ऐसा मुद्दा है जिसे आप हल करने का प्रयास कर रहे हैं। –