2013-06-19 10 views
7

एक परियोजना में मैं वर्तमान में एक मालिकाना गतिशील पुस्तकालय से लिंक पर काम कर रहा हूं। जैसे ही मैं लाइब्रेरी के initialize फ़ंक्शन चलाता हूं, लॉगिंग और संख्याओं की प्रिंटिंग का व्यवहार बदल जाता है।कोउट में अल्पविराम अक्षम करें?

कॉमा हर तीसरे दशमलव में डाला गया है। अर्थात।

cout << 123456789 << endl 

123456789 प्रिंट आउट के लिए इस्तेमाल किया और अब यह 123,456,789 प्रिंट करता है। यह बहुत कष्टप्रद है, क्योंकि यह व्यवहार वह नहीं है जो मैं चाहता हूं।

कुछ शोध के बाद मुझे एक लोकेल मुद्दे पर संदेह है। मैं initialize समारोह

setlocale(LC_ALL,"C"); 

बुला सोच यह मेरा डिफ़ॉल्ट करने के लिए स्थानीय रीसेट हो सकता है के बाद कोड की इस पंक्ति का उपयोग कर की कोशिश की है; लेकिन कोई फायदा नहीं हुआ। कॉमा जारी है !!

मुझे क्या याद आ रही है?

मैंने here पर एक संबंधित अनुवर्ती पोस्ट पोस्ट किया है।

उत्तर

5

आप setlocale के साथ सेट किए गए लोकेल से स्वतंत्र, स्ट्रीम के लिए लोकेल सेट कर सकते हैं। प्रयास करें std::cout.imbue(std::locale("C"));

+0

जो मेरे मुख्य में स्थानीय चर के लिए बहुत अच्छा काम करता है! हालांकि, मैं निष्पादन योग्य निष्पादन योग्य 10+ कस्टम साझा पुस्तकालयों से भी जुड़ा हुआ हूं। अल्पविराम दुर्भाग्यवश दुर्भाग्य से उन साझा पुस्तकालयों 'स्ट्रिंगस्ट्रीम' और 'couts' में प्रचारित है। क्या मेरे पुस्तकालयों के लिए सभी स्रोत कोड के माध्यम से जाने और स्थानीय स्ट्रिंग स्ट्रीम के लिए 'imbue (std :: locale (" सी ")) में जोड़ने के बजाय, स्थानीय स्तर पर स्थानीय रूप से सेट करने का एक बेहतर तरीका है? – dinkelk

+0

मैंने प्रश्न को और अधिक विशिष्ट बनाने के लिए संपादित किया। – dinkelk

2

तुम सिर्फ अल्पविराम के छुटकारा पाने के लिए चाहते हैं, आप भी वर्तमान std::numpunct जो है शायद डिफ़ॉल्ट जो do_grouping पर हावी नहीं होता के साथ के कारण बदल सकते थे।

std::cout.imbue(std::locale(std::cout.getloc(), new std::numpunct<char>())); 
+0

@ जेसी गुड, सुझाव के लिए धन्यवाद। यह मेरे कुछ मामलों के लिए अच्छा काम करता है। ऊपर मेरा संपादन देखें। – dinkelk

+0

@ डिंकेलक आपको केवल प्रति पोस्ट एक प्रश्न पूछना चाहिए। मेरा सुझाव है कि आप इस मुद्दे को संबोधित करते हुए एक नया प्रश्न बनाएं। :) – 0x499602D2

+0

@ 0x499602D2 यहां दिए गए उत्तरों ने मेरी समस्या पूरी तरह से ठीक नहीं की है। सवाल नहीं बदला है, बस विनिर्देशों। – dinkelk

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