मुझे बूस्ट property_tree के लिए हेडर फाइलों में खो गया है और निचले परतों के आसपास दस्तावेज़ों की कमी के कारण, मैंने यह पूछने का निर्णय लिया है कि आसान तरीका क्या है बूलियन मानों को पार्स किए जाने के तरीके को बदलने के लिए स्ट्रीम अनुवादक से अधिक सवारी करें।बदलें कैसे बढ़ाएं :: property_tree पढ़ता है बूल को स्ट्रिंग का अनुवाद
समस्या यह है कि एक संपत्ति के पेड़ के इनपुट पक्ष पर, उपयोगकर्ता हैं, और वे कॉन्फ़िगरेशन फ़ाइलों को संशोधित कर सकते हैं। एक बूलियन मान की तरह, कई तरीकों से में निर्दिष्ट किया जा सकता है:
dosomething.enabled=true
dosomething.enabled=trUE
dosomething.enabled=yes
dosomething.enabled=ON
dosomething.enabled=1
डिफ़ॉल्ट व्यवहार है 0 या 1 के लिए जाँच करने के लिए और फिर
std::ios_base::boolalpha
का उपयोग स्ट्रीम प्राप्त करने के पार्स करने के लिए प्रयास करने के लिए मौजूदा लोकेल के लिए उचित तरीके से मूल्य ... जो कि हम अंतरराष्ट्रीय ग्राहकों को कॉन्फ़िगरेशन फ़ाइल भेजने का प्रयास करते हैं, जो पागल हो सकते हैं।
तो इस व्यवहार या बूल को ओवरराइड करने का सबसे आसान तरीका क्या है? लागू करने के लिए सबसे आसान नहीं है, बल्कि उपयोग करने में आसान है - ताकि आईपीटीरी से प्राप्त होने वाली मेरी कक्षा के उपयोगकर्ताओं को बूलियन मूल्यों के लिए कुछ विशेष करने की आवश्यकता न हो।
धन्यवाद!
ठीक है, वाह। धन्यवाद @ एमिइल - यह काम करता है। यह वर्तमान में जादू से अलग है। मैंने अभी तक आउटपुट की कोशिश नहीं की है, लेकिन ऐसा लगता है कि 'झूठी' आउटपुट केवल मौके से काम करता है; झूठ के चारों ओर उद्धरण नहीं होना चाहिए? – Arunas
हाहा, और निश्चित रूप से जब से मैं कोड के लिए बूस्ट टेस्ट केस लिख रहा हूं, यह भी स्पष्ट है कि 'str == "0" 'iquals (str," yes ")' – Arunas
के समान वाक्य में नहीं है @ अरुणस: हां "झूठी" के आसपास उद्धरण होना चाहिए। मुझे आश्चर्य है कि संकलित भी। यदि आप * आंशिक टेम्पलेट विशेषज्ञता * का अध्ययन करने के लिए चारों ओर मिलता है, तो यह उत्तर इतना जादुई दिखाई नहीं देगा। :-) –