C++-Standardbibliothek <locale>

In der C++-Standardbibliothek,localeKlassen bieten einen Mechanismus zur Steuerung des lokalisierten Verhaltens eines Programms, insbesondere Formatierungs- und Konvertierungsoperationen im Zusammenhang mit Sprache und Kultur.localeKlasse in#include <locale>Definiert in der Header-Datei.

In der C++-Standardbibliothek,localeDas Modul bietet Programmen eine Möglichkeit, Textdaten gemäß der Locale des Benutzers zu verarbeiten, z. B. das Formatieren von Zahlen, Datums- und Zeitangaben sowie das Vergleichen und Sortieren von Zeichenketten. Dies erleichtert das Schreiben internationalisierter Anwendungen.

Syntax

Das Folgende verwendetlocaleGrundlegende Syntax von Klassen:

#include <iostream>
#include <locale>

int main() {
    // 创建一个默认的 locale 对象
    std::locale loc;

    // 使用 locale 对象
    std::cout.imbue(loc); // 设置 cout 的 locale

    // 显示当前 locale 的名称
    std::cout << "Current locale: " << loc.name() << std::endl;

    // 更多操作...
    return 0;
}

Beispiel

1. Grundlegende Verwendung

Das Folgende ist ein einfaches Beispiel, das zeigt, wie man es verwendet.localeZum Formatieren von Zahlen:

Beispiel

#include <iostream>
#include <locale>

int main() {
    std::locale loc("en_US.UTF-8"); // Auf amerikanisches Englisch setzen
    std::cout.imbue(loc); // Locale von cout setzen

    double number = 1234567.89;
    std::cout << "Formatierte Zahl: " << number << std::endl;

    return 0;
}

Ergebnis ausgeben:

Formatted number: 1,234,567.89

2. Zeichenketten vergleichen

NutzunglocaleZeichenketten können gemäß den Regeln einer bestimmten Locale verglichen werden:

Beispiel

#include <iostream>
#include <locale>
#include <string>

int main() {
    std::locale loc("en_US.UTF-8");
    std::string str1 = "apple";
    std::string str2 = "banana";

    if (std::use_facet<std::collate<char>>(loc).compare(str1.c_str(), str1.c_str() + str1.size(),
                                                       str2.c_str(), str2.c_str() + str2.size()) < 0) {
        std::cout << str1 << " kommt vor " << str2 << std::endl;
    } else {
        std::cout << str1 << " kommt nach " << str2 << std::endl;
    }

    return 0;
}

Ergebnis ausgeben:

apple comes before banana

3. Datums- und Zeitformatierung

localekann auch zum Formatieren von Datums- und Zeitangaben verwendet werden:

Beispiel

#include <iostream>
#include <locale>
#include <ctime>

int main() {
    std::locale loc("en_US.UTF-8");
    std::cout.imbue(loc);

    std::time_t now = std::time(nullptr);
    std::tm* timeinfo = std::localtime(&now);

    char buffer[100];
    std::strftime(buffer, sizeof(buffer), "%A, %B %d, %Y", timeinfo);
    std::cout << "Aktuelles Datum: " << buffer << std::endl;

    return 0;
}

Ausgabeergebnis(Beispiel):

Current date: Monday, March 14, 2023

localeDie Klasse ist ein leistungsstarkes Werkzeug in der C++-Standardbibliothek und ermöglicht Entwicklern, Anwendungen zu schreiben, die sich an verschiedene Locales anpassen können.

Weitere Erweiterungen