2010-07-10 93 views
5

我試圖用美國或英國語言環境字符串實例化std::locale對象。
Both std::locale loc("en_US") and std::locale loc("en_GB") throw a bad locale name runtime exception。使用"""C"創建區域設置正常工作;不過,我在設置單個國家/地區區域時遇到問題。爲什麼std :: locale loc(「en_US」)會引發異常?

我想這樣做的原因是單元測試的目的,以確保字符串排序方法的集合正常工作。

我還應該指出,我在使用Visual Studio 2008的Windows中進行編碼,如果可能,我想保持我的代碼跨平臺。

回答

6

std::locale支持的字符串是實現特定的;它可能是實現不支持你傳遞的字符串作爲參數。

由於您在Windows中編程,因此您可能對Language Strings感興趣,其中列出setlocalCountry/Region Strings用於國家標識符的語言標識符。據我所知,語言標識符使用連字符(例如en-US,nl-BEzh-HK)。

你可以找到std::locale::global(std::locale("zh-CN")) Gets "Bad locale name"??

+2

我發現我的VC++速成2012現在可以接受 「EN-US」,但仍然拋出的 「EN_US」 。 – 2013-11-28 07:52:57

相關問題