一千萬個為什麽

搜索

在Windows下保存和恢復用戶請求的小數點

我們有一個程序,用於顯示輸出並以用戶指定的語言環境進行輸入,但也以不依賴用戶語言環境的標準格式從配置文件和Windows註冊表中讀取文本並將文本保存到該文件。這兩組動作都使用C庫函數在數字和字符串之間進行轉換。

要在兩個操作之間切換,有一些代碼旨在更改該類對象生命周期中的數字(包括小數點字符)的區域設置:

class StandardLocale
{
    std::string locale;

public:
    StandardLocale()
        : locale(setlocale(LC_NUMERIC,nullptr))
    {
        setlocale(LC_NUMERIC,"C");
    }

    ~StandardLocale()
    {   
        setlocale(LC_NUMERIC,locale.c_str());
    }
};

但是,有一種情況無法正常工作。如果區域設置為法語,但在控制面板中將小數點設置為“。”附加設置,語言環境字符串將返回為“French_France.1252”,忽略小數點設置。當對象超出範圍時,語言環境重置為“French_France.1252”,它將用戶設置中的小數點字符更改為逗號。

最佳答案

暫時沒有最佳答案

轉載註明原文: 在Windows下保存和恢復用戶請求的小數點