1

これは「奇妙」ですが、boost::locale (Microsoft Visual Studio 2010 の下) とブースト字句キャストを使用して数値を文字列に変換できないようです。

int main() {

    boost::locale::generator gen;
    std::locale::global(std::locale(gen("de_DE")));
    std::cout << boost::lexical_cast<double>("1,253") << std::endl;
    return 0;
}

ドイツ語ロケールでは、「,」記号を 10 進数の識別子として使用する必要があります。したがって、上記は「1.253」と読む必要があります。ただし、動作しません (lexical_cast では例外が発生します) - 使用std::locale::global(std::locale("German_Germany.1252"));しても動作しますが、Microsoft の命名/コードページに「制限」せずに、ポータブル システムを使用したいと考えています。

boost::locale を使用する方法、または std::locale よりも移植性の高いローカリゼーションを使用する方法を教えてください。

4

0 に答える 0