2011-10-07 13 views
14

मैं एक Windows प्लेटफॉर्म पर एक चल बिन्दु मूल्य उत्पादन के लिए निम्न सी ++ सिंटैक्स का उपयोग कर रहा हूँ के लिए स्थानीयकृत:सी ++ printf के साथ% च लेकिन उपयोगकर्ता के देश

printf("%.2f", 1.5); 

यह अच्छी तरह से काम करता है, तो मैं एक अंग्रेजी पर चला उपभोक्ता खाता। मेरी धारणा यह थी कि यदि मैं इसे चलाता हूं, तो फ्रांसीसी उपयोगकर्ता खाते कहें, आउटपुट 1.50 के बजाय 1,50 होगा।

मैं इसे क्यों नहीं देखता और अपना वांछित परिणाम कैसे उत्पन्न करूं?

उत्तर

16

रेडिक्स चरित्र (यानी '।' या ',') वर्तमान लोकेल द्वारा परिभाषित किया गया है। डिफ़ॉल्ट लोकेल (कम से कम विंडोज सिस्टम के लिए) "सी" है, जो '।' को परिभाषित करता है। रेडिक्स चरित्र के रूप में।

आप setlocale फ़ंक्शन का उपयोग कर सी/सी ++ प्रोग्राम के लिए वर्तमान लोकेल सेट कर सकते हैं।

मौजूदा प्रणाली/उपयोगकर्ता स्थान के लिए स्थान निर्धारित करने के लिए, आप निम्न कथन का उपयोग कर सकते हैं: अधिक जानकारी के लिए

#include <locale.h> 
setlocale(LC_ALL, ".OCP"); 

here देखें (लिंक किए गए पृष्ठ पर उदाहरण cf. ...) के बारे में setlocale

+0

धन्यवाद का प्रयास करें, लेकिन जब मैं setlocale फोन करना चाहिए - शुरुआत में जब अनुप्रयोग आरंभ या हर printf से पहले? – ahmd0

+1

अपने ऐप की शुरुआत में इसे कॉल करने के लिए पर्याप्त है। – MartinStettner

+2

सी ++ विकल्प 'std :: cout.imbue (std :: locale (" ")) है;' – MSalters

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