2011-01-18 16 views
7

निम्नलिखित कोड को देखते हुए:हजारों विभाजक के रूप में अल्पविराम डालने के लिए आप कोउट लोकेल कैसे सेट करते हैं?

cout << 1000; 

मुझे निम्न आउटपुट चाहिए:

1,000 

यह std :: locale, और cout.imbue() फ़ंक्शन का उपयोग करके किया जा सकता है, लेकिन मुझे डर है I यहां एक कदम गुम हो सकता है। क्या आप इसे खोज सकते हैं? मैं वर्तमान में वर्तमान लोकेल की प्रतिलिपि बना रहा हूं, और हजारों विभाजक पहलू को जोड़ रहा हूं, लेकिन कॉमा मेरे आउटपुट में कभी नहीं दिखाई देता है।

template<typename T> class ThousandsSeparator : public numpunct<T> { 
public: 
    ThousandsSeparator(T Separator) : m_Separator(Separator) {} 

protected: 
    T do_thousands_sep() const { 
     return m_Separator; 
    } 

private: 
    T m_Separator; 
} 

main() { 
    cout.imbue(locale(cout.getloc(), new ThousandsSeparator<char>(','))); 
    cout << 1000; 
} 
+0

क्या आपने सटीक कोड को संकलित करने का प्रयास किया है जिसे आप चाहते हैं कि आप विश्वास कर रहे हैं कि आप इसका उपयोग कर रहे हैं? –

+0

संभावित डुप्लिकेट [क्या कोई अंतर्निहित फ़ंक्शन है जो अल्पविराम से सी, सी ++, या जावास्क्रिप्ट में एक संख्या को अलग करता है?] (Http://stackoverflow.com/questions/3479485/is-there-a-built-in- फ़ंक्शन-द-कॉमा-से अलग-ए-संख्या-इन-सीसी-या-जावास्क्रिप्ट) –

+0

क्या कोई memleak है? –

उत्तर

6

do_thousands_sep के डिफ़ॉल्ट कार्यान्वयन पहले से ही ',' देता है। ऐसा लगता है कि आपको इसके बजाय do_grouping ओवरराइड करना चाहिए। do_grouping डिफ़ॉल्ट रूप से एक खाली स्ट्रिंग देता है, जिसका अर्थ है कोई समूह नहीं। इसका मतलब है कि प्रत्येक तीन अंकों के समूह:

string do_grouping() const 
{ 
    return "\03"; 
} 
+0

"\ 03" का प्रतिनिधित्व क्या करता है? क्या ASCII "पाठ के अंत" के लिए है? यदि हां, तो क्यों? –

+1

@Cory: do_grouping एक स्ट्रिंग देता है जिसे समूह के आकार का प्रतिनिधित्व करने वाले एक-चार संख्याओं की सरणी के रूप में माना जाता है। "\ 03" एक स्ट्रिंग बनाता है जिसमें संख्यात्मक मान 3 वाला एक और एक वर्ण होता है, जिसका अर्थ है कि समूह प्रत्येक के 3 अंक होंगे। – ybungalobill

+0

डिफ़ॉल्ट एक ',' नहीं है। सी स्थानीय कोई समूह नहीं करता है, अन्यथा यह स्थानीय विशिष्ट है। –

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