मैं वर्तमान में स्ट्रिंगबफ के उप-वर्ग को लागू करने की कोशिश कर रहा हूं ताकि बफर को विशिष्ट वर्णों ('\ n' मेरे मामले में) के लिए टोकननाइज़ करने की अनुमति मिल सके और एक कार्यवाही कर सकें यदि यह char होता है (संदेश को मेरे मामले में बाद में लॉगर और साफ़ बफर को डंप करें)। इस लक्ष्य को प्राप्त करने के लिए, मैंने sputc को ओवरराइड किया ('\ n' के लिए बाहर निकलने के लिए लागू करने के लिए) और xsputn (वास्तव में sputc का उपयोग करने के लिए, क्योंकि जीसीसी कार्यान्वयन डिफ़ॉल्ट रूप से ऐसा नहीं लगता है)। डिबगिंग उद्देश्यों के लिए, मैंने sputc को प्रत्येक वर्ण को लिखने के लिए sputc को छोड़ दिया है।स्ट्रीमबफर कार्यान्वयन के लिए std :: endl और ' n' के बीच मतभेद
अब यह मेरा सवाल यह है: अगर मैं की तरह
mystream << "Some text" << std::endl;
sputc कुछ '\ n' जो std :: endl द्वारा शामिल किया जाना चाहिए के अलावा प्रत्येक वर्ण प्राप्त करता है का उपयोग करें, तो कार्रवाई है कि उम्मीद है है नहीं किया गया क्योंकि '\ n' पास नहीं हुआ है। अगर मैं
mystream << "Some text" << '\n';
या यहाँ तक कि
mystream << "Some text" << "\n" << std::flush;
सब कुछ उम्मीद और मेरी sputc कार्यान्वयन हो जाता है '\ n' चार रूप में काम करता की तरह कुछ का उपयोग करें।
तो मेरा सवाल यह है: क्या कोड कोड दोनों स्ट्रिंगबफ के पीछे बिल्कुल समान नहीं होनी चाहिए, और यदि नहीं, तो मुझे अन्य तरीकों को '\ n' प्राप्त करने के लिए ओवरराइड करना होगा?
'<< std :: endl' करता है, ठीक है, '<<' \ n '<< std :: flush;'। –
आप जो करने की कोशिश कर रहे हैं उसे करने के आसान तरीके हैं। हो सकता है कि अगर आप असली समस्या के बारे में कोई सवाल पूछें तो आप इसे हल करने के सर्वोत्तम तरीके के बारे में सलाह ले सकते हैं। –