2017-12-15 2 views
3

Um CSV-Dateien mit dem richtigen numerischen Trennzeichen ('.' Oder ',') zu generieren, weil ich will, dass sie kompatibel mit Excel-Version auf dem Computer installiert sind, muss ich bekommen Dezimaltrennzeichen aus einem C++ - Programm.Erhalten Sie System Dezimaltrennzeichen mit STL

Mein Computer hat eine französische Version von Windows/Excel, daher ist das Dezimaltrennzeichen ','.

int main() 
{ 
    std::cout << std::use_facet< std::numpunct<char> >(std::cout.getloc()).decimal_point(); 
    return 0; 
} 

. Ausgänge, die nicht

erwartet wird, unter Verwendung von I Win32-API versucht:

int main() 
{ 
    TCHAR szSep[8]; 
    GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SDECIMAL, szSep, 8); 
    std::cout << szSep; 
} 

Ausgänge ,, die erwartet wird.

Gibt es eine Entsprechung zu dieser GetLocaleInfo Funktion in STL, die in einem einfachen main funktioniert?

+2

[ 'std :: locale'] (http://en.cppreference.com/w/cpp/locale/locale) stellt diese Informationen auf tragbare Weise bereit. – user0042

+0

@ user0042 während linkbasierte Antworten entmutigt werden, so ist die Antwort als Kommentar - ich denke, Sie sollten es migrieren. – UKMonkey

+0

@UKMonkey Aber was OP verwendet, sieht so aus, als ob es tatsächlich auf den 'std :: locale'-Einstellungen basiert. Also habe ich das nicht als Antwort geschrieben. – user0042

Antwort

0

Dank verknüpft Beispiel user0042, der geeignete Weg, dies mit STL zu tun ist:

int main() 
{ 
    // replace the C++ global locale as well as the C locale with the user-preferred locale 
    std::locale::global(std::locale("")); 
    // use the new global locale for future wide character output 
    std::cout.imbue(std::locale()); 

    std::cout << std::use_facet< std::numpunct<char> >(std::cout.getloc()).decimal_point(); 
} 

Ausgänge ,, die erwartet wird.

Oder, wenn Sie wollen nicht die globale ändern:

int main() 
{ 
    std::cout.imbue(std::locale("")); 
    std::cout << std::use_facet< std::numpunct<char> >(std::cout.getloc()).decimal_point(); 
} 
Verwandte Themen