2013-09-21 6 views
8

सी ++ मानक पहलुओं की छह श्रेणियों को परिभाषित करता है: collate, ctype, monetary, numeric, time, और messagesstd :: locale :: संदेशों का उपयोग कब और कैसे करें?

मुझे पहले पांच का उपयोग पता है, लेकिन मुझे नहीं पता कि आखिरी बार कब और कैसे उपयोग करें: std::locale::messages

कोई भी उदाहरण उदाहरण?

उत्तर

8

std::locale::messages अनुवाद कैटलॉग खोलने के लिए उपयोग किया जाता है (आमतौर पर जीएनयू gettext) अनुवाद तारों सहित।

#include <iostream> 
#include <locale> 

int main() 
{ 
    std::locale loc("de_DE.utf8"); 
    std::cout.imbue(loc); 
    auto& facet = std::use_facet<std::messages<char>>(loc); 
    auto cat = facet.open("sed", loc); 
    if(cat < 0) 
     std::cout << "Could not open german \"sed\" message catalog\n"; 
    else 
     std::cout << "\"No match\" in German: " 
        << facet.get(cat, 0, 0, "No match") << '\n' 
        << "\"Memory exhausted\" in German: " 
        << facet.get(cat, 0, 0, "Memory exhausted") << '\n'; 
    facet.close(cat); 
} 

जो आउटपुट:

"No match" in German: Keine Übereinstimmung 
"Memory exhausted" in German: Speicher erschöpft 
यहाँ एक example जो एक मौजूदा संदेश जर्मन, retrieves ( get() का उपयोग) में लिनक्स पर ( sed के लिए) का उपयोग कर सूची खोलता है और अंग्रेजी स्ट्रिंग्स के लिए अनुवाद आउटपुट है

संपादित करें: this comment के अनुसार स्पष्टीकरण।

+3

न केवल जीएनयू गेटटेक्स्ट। संदेश कैटलॉग POSIX का हिस्सा हैं (उदा।, जेनकैट (1), कैटोपेन (3))। विंडोज़ में संदेश कैटलॉग भी हैं, हालांकि मुझे यकीन नहीं है कि क्या उन्होंने कभी भी मानक लोकेल संदेश पहलुओं को लागू करने के लिए परेशान किया है। – bames53

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