2012-01-02 10 views
6

संभव डुप्लिकेट:
C++ HTML template framework, templatizing library, HTML generator libraryसी ++ में एचटीएमएल आउटपुट का उत्पादन करने का सबसे अच्छा तरीका क्या है?

मैं एक कार्यक्रम है, कि कई तालिकाओं में शामिल है, तो मैं उन्हें लॉग फ़ाइलों में ट्रैक करने के लिए जब मैं कार्यक्रम डिबग चाहते हैं। मैं रंगीन, स्वरूपित आउटपुट चाहता हूं इसलिए मैंने सोचा कि मैंने इसे HTML प्रारूप में लिखा है। तो सी ++ में एचटीएमएल फाइलें बनाने का सबसे अच्छा तरीका क्या है?

तुच्छ रास्ता इतना घृणित और त्रुटि प्रवण है:

std::stringstream ret; 
ret << "<TABLE BORDER=\"1\" CELLBORDER=\"0\">\n"; 
ret << " <TR>\n"; 
... 

तो मैंने सोचा कि मैं एक HTML आवरण लिखा था लेकिन मुझे लगता है इस कारण के लिए इतने सारे देखते हैं।

मैं इस वाक्य रचना या इसी तरह के C++ एक स्थिर टाइप किया एचटीएमएल आवरण हैं:

CHtmlHtml Html; 
Html << 
    Body() % Id("1") 
     << H1("My First Heading") << 
     << P("My first paragraph."); 

या इस मामले

CHtmlTable table; 
table % Border(1) % CellBorder(0) << 
    Tr() << 
     Td("Text") % Colspan(4); 

में क्या कोई ऐसी ही परियोजना है?

+2

@ टाज़मान: मुझे एक स्थिर रूप से टाइप किया गया HTML wrapper, टेम्पलेट आधारित नहीं है –

+0

मैं टेम्पलेट्स को रद्द करने वाली आपकी आवश्यकताओं पर अस्पष्ट हूं, लेकिन उत्तर tzaman ने C++ के लिए उपयोगी समाधानों का एक पूरा समूह सूचीबद्ध किया है, कुछ टेम्पलेट्स पर नहीं सब। – casualcoder

+1

मैंने प्रस्तावित लिंक की जांच की और औद्योगिक-एंटीड्रिप्रेसेंट के बारे में बात करने के करीब भी कुछ भी नहीं देख सका। वे बहुत अधिक HTML/XML टेम्पलेट्स से आते हैं। –

उत्तर

3

एचटीएमएल और एक्सएमएल दोनों एक ही वाक्यविन्यास का उपयोग करते हैं, तो आप गतिशील रूप से आवश्यक सभी नोड्स बनाने के लिए सी ++ एक्सएमएल लाइब्रेरी (जैसे कि TinyXML) का उपयोग कर सकते हैं।

This page दिखाता है कि XML (या आपके मामले में, HTML) दस्तावेज़ बनाने के लिए TinyXML का उपयोग कैसे करें।

आपको कुछ झुकाव करने की आवश्यकता हो सकती है (जैसे जेनरेट की गई फ़ाइल के शीर्ष पर एक्सएमएल घोषणा को हटा देना), लेकिन मुझे लगता है कि आप इसके लिए कुछ आसानी से एक रैपर बना सकते हैं।

+0

हां, मैं अपने रैपर के लिए आधार के लिए एक्सएमएल का उपयोग कर सकता हूं, लेकिन मैं एक रैपर लिखना नहीं चाहता था। :) लेकिन ऐसा लगता है कि इस रैपर लाइब्रेरी मौजूद नहीं है, इसलिए मैं एक लिखूंगा ... –

संबंधित मुद्दे

 संबंधित मुद्दे