PDA

Показать полную графическую версию : "FreeBSD, std::locale problem"


eudo
04-01-2008, 20:25
Добрый всем вечер.

Столкнулся с такой проблемой, std::locale("") упорно отказывается принимать в качестве аргемента строки отличные от "", "C", "POSIX", на все остальное выкидывается исключение, например:

ru_RU.CP1251 : locale::facet::_S_create_c_locale name not valid
ru_RU.CP866 : locale::facet::_S_create_c_locale name not valid
ru_RU.ISO8859-5 : locale::facet::_S_create_c_locale name not valid
ru_RU.KOI8-R : locale::facet::_S_create_c_locale name not valid

Хотя:

web-1# locale -a | grep ru_RU
ru_RU.CP1251
ru_RU.CP866
ru_RU.ISO8859-5
ru_RU.KOI8-R
ru_RU.UTF-8

Соответственно С вариант:

setlocale(LC_ALL, "ru_RU.CP1251");

работает замечательно. Собственно, может кто-то подскажет решение проблемы? Почему С++ locales не работают. Поиском не нашел.


Версии Ос и компилятора:

web-1# uname -a ; gcc -v
FreeBSD web-1 6.2-RELEASE FreeBSD 6.2-RELEASE #0: Fri Jan 12 11:05:30 UTC 2007 root@dessler.cse.buffalo.edu:/usr/obj/usr/src/sys/SMP i386
Using built-in specs.
Configured with: FreeBSD/i386 system compiler
Thread model: posix
gcc version 3.4.6 [FreeBSD] 20060305




© OSzone.net 2001-2012