बार जब आप बहुत पहली पंक्ति का उत्सर्जन में
Artist Title Price Genre Disc Sale Tax Cash
"संरेखण", आप "पहले से" पता करने के लिए है कैसे विस्तृत प्रत्येक स्तंभ होने की आवश्यकता होगी प्राप्त करने के लिए (अन्यथा, संरेखण असंभव है) । एक बार जब आप प्रत्येक कॉलम के लिए आवश्यक चौड़ाई को जानते हैं (यह प्राप्त करने के कई तरीके हैं कि आपका डेटा कहां से आ रहा है), तो दूसरे उत्तर में उल्लिखित setw
फ़ंक्शन मदद करेगा, या (अधिक क्रूरता से ;-) अतिरिक्त रिक्त स्थान (क्लंकी, सुनिश्चित करने के लिए) की ध्यान से गणना की गई संख्या को उत्सर्जित कर सकते हैं, आदि। मैं वैसे भी टैब की अनुशंसा नहीं करता क्योंकि आपके पास वास्तविक आउटपुट डिवाइस सामान्य रूप से प्रस्तुत करने के तरीके पर कोई वास्तविक नियंत्रण नहीं है।
मूल समस्या पर वापस जाएं, यदि आपके पास प्रत्येक कॉलम का मान vector<T>
में किसी प्रकार का है, उदाहरण के लिए, आप कॉलम की अधिकतम चौड़ाई निर्धारित करने के लिए पहला प्रारूपण पास कर सकते हैं, उदाहरण के लिए (सुनिश्चित करना सुनिश्चित करें कॉलम के लिए हेडर की चौड़ाई भी, ज़ाहिर है)।
यदि आपकी पंक्तियां "एक-एक करके" आ रही हैं, और संरेखण महत्वपूर्ण है, तो आपको पंक्तियों को कैश या बफर करना होगा क्योंकि वे अंदर आते हैं (स्मृति में अगर वे फिट होते हैं, अन्यथा डिस्क फ़ाइल पर बाद में "रिवाइंड" और शुरुआत से दोबारा पढ़ा जाए), पंक्तियों के आने के बाद "प्रत्येक कॉलम की अधिकतम चौड़ाई" के वेक्टर को अद्यतन रखने के लिए देखभाल करना। आप कुछ भी आउटपुट नहीं कर सकते हैं (यहां तक कि हेडर भी नहीं!), अगर संरेखण रखना महत्वपूर्ण है, तब तक जब तक कि आपने आखिरी पंक्ति नहीं देखी है (जब तक कि आप किसी भी तरह से जादुई रूप से स्तंभों की चौड़ाई का पिछला ज्ञान नहीं रखते हैं ;-)।
स्रोत
2010-03-21 04:57:50
नीचे दिए गए प्रतिसाद कॉलम की चौड़ाई निर्दिष्ट करने की अनुमति देते हैं। ध्यान दें कि इसके लिए आपको ऊपरी बाउंड (उदाहरण के लिए डेटाबेस बाधा) जानने या इसे पहले से गणना करने की आवश्यकता है (जिसका मतलब है कि वास्तव में प्रिंट करने से पहले पूरी संरचना को पार्स करना)। दूसरा, यद्यपि आवश्यक है, निश्चित रूप से धीमा है :) –