Boost.Locale: Frequently Asked Questions

| Boost.Locale

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files
- Examples

Frequently Asked Questions

- I try to use some Boost.Locale functions and I get an `std::bad_cast` exception thrown?
  Answer: You probably try to use incorrect `std::locale` object. All Boost.Locale tools relay on `std::locale` object's facets. The locale object should be generated with generator class and then passed to the function or alternatively global locale should be set using `std::locale::global()` function such that global locale (and default created one) would have required facets to use.
- I had installed global locale and try to write something to stream but still get wrong output? For example:
  #include <boost/locale.hpp>
  #include <iostream>
  int main()
  {
  boost::locale::generator gen;
  std::locale::global(gen(""));
  std::cout << boost::locale::as::date << std::time(0) << std::endl;
  }
  Prints a number instead of a date.
  Answer: You forget to imbue the locale to the stream. Changing the global locale does not affect the locale in existing `iostream` objects. Thus because `std::out` and other global streams were created before changing the global locale Boost.Locale manipulators have no effect. You need to write:
  #include <boost/locale.hpp>
  #include <iostream>
  int main()
  {
  boost::locale::generator gen;
  std::locale l = gen("");
  std::locale::global(l);
  std::cout.imbue(l);
  std::cout << boost::locale::as::date << std::time(0) << std::endl;
  }

- © Copyright 2009-2012 Artyom Beilis, Distributed under the Boost Software License, Version 1.0.