Ну, это «странно», но я не могу преобразовать числовые значения в строки, используя boost :: locale (в Microsoft Visual Studio 2010) и лексическое приведение Boost.
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;
}
В немецком языке знак «,» должен использоваться в качестве десятичного идентификатора. Поэтому выше следует читать «1.253». Однако это не работает (lexical_cast дает исключение) — Использование std::locale::global(std::locale("German_Germany.1252"));
действительно работает — однако я хочу использовать портативную систему и не ограничивать себя именами / кодовыми страницами Microsoft.
Как мне использовать boost :: locale или использовать более переносимую локализацию, чем std :: locale?
Задача ещё не решена.
Других решений пока нет …