मैं सी ++ टेक्स्ट आउटपुट स्ट्रीम के लिए एक टैब जैसी क्षमता प्रदान करना चाहता हूं। इस सुविधा को मुझे "इस स्थिति को नोट करें" कहने की अनुमति देनी चाहिए, फिर एकाधिक सम्मिलन संचालन की अनुमति दें, और आखिरकार मुझे "पर्याप्त भरने वाले वर्ण जोड़ें ताकि मूल रूप से नोट की गई स्थिति के पिछले N
वर्ण समाप्त हो सकें"।क्यों cout.tellp हमेशा -1 लौटाता है?
मानक iostream
सिस्टम कॉलम स्थिति बनाए रखने के लिए प्रतीत नहीं होता है, लेकिन मैंने सोचा था कि मैं इसे tellp()
का उपयोग करके नकली बना सकता हूं। मेरी धारणा यह थी कि मेरे आउटपुट अनुक्रम में दो बिंदुओं पर tellp()
के बीच अंतर बाइट्स को हस्तक्षेप करने की संख्या के अनुरूप होगा।
दुर्भाग्य से, कम से कम मेरे जीएनयू सी ++ पर्यावरण में, cout
स्ट्रीम स्थिति की कथा को बनाए रखता नहीं है। प्रत्येक cout.tellp()
कॉल returns -1
पर कॉल करें। ऐसा क्यों है?
'tellp' किसी भी स्ट्रीम में एक स्तंभ स्थिति कभी नहीं है। यह तलाशने योग्य धाराओं में केवल सार्थक है। –
@ आर। मार्टिनिन्हो फर्नांडीस सही है। 'टेलप' आपको यह बताने वाला है कि वर्तमान स्थिति पर वापस जाने के लिए 'तलाश' को कौन सा मूल्य प्रदान करना है। इस मामले में, यह आपको बता रहा है कि ऐसी कोई संभावना नहीं है। Entabbing को किसी अन्य तरीके से समर्थित किया जाना है। –
दोनों धन्यवाद। यह तलाशने का रिश्ता था कि मैं समझने में नाकाम रहा। –