The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"FreeBSD, std::locale problem"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"FreeBSD, std::locale problem"  
Сообщение от eudo email(ok) on 04-Янв-08, 01:59 
Добрый всем вечер.

Столкнулся с такой проблемой, 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

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "FreeBSD, std::locale problem"  
Сообщение от Fisher (??) on 04-Янв-08, 17:01 
Может это тебе поможет http://www.opennet.me/docs/RUS/linux_parallel/node248.html
И еще нужно вроде при компановке такой флаг указать:
LDFLAGS    = -lstdc++ -lrpcsvc -g (не уверен)

Я обычно использую 3-и файла, все три файла нах-ся в одной директории:
1) Makefile
2) myprog.mk(можно хоть как назвать, его указываешь в Makefile)
3) и собственно файл cpp (например)

Содержимое файлов следующее:
1) Makefile:
CC    =    gcc
CFLAGS  =       -I. -Wall -g -DDEBUG_DETAIL -DMYNEW
LDFLAGS    =     -lstdc++ -lrpcsvc -g

PROG    =    primer
SRCS    =    primer.cpp
        

#RARNAME    =    ../sockclient
#RARSRC    =    *.cc *.cpp *.h *.hpp Makefile myprog.mk

.include "myprog.mk"

2)myprog.mk
.SUFFIXES:    .cpp .cc

.cpp.o:
    ${CC} -c ${CFLAGS} -fhandle-exceptions -frtti ${CFADD} ${.IMPSRC}

.cc.o:
    ${CC} -c ${CFLAGS} -fhandle-exceptions -frtti ${CFADD} ${.IMPSRC}

OBJS    =  ${SRCS:R:S/$/.o/g}

${PROG}: ${OBJS} ${LIBC} ${DPADD}
    ${CC} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}

clean:
    rm -f .depend
    rm -f ${PROG} *.o *.bak .depend

depend: .depend
.depend: ${SRCS} *.h
    mkdep ${CFLAGS:M-[ID]*} ${SRCS:M*.cpp} ${SRCS:M*.c} ${SRCS:M*.cc}

rar:
    rar a ${RARNAME}.rar ${RARSRC}

restore:
    rar x ${RARNAME}.rar

all:    depend ${PROG}

3) primer.cpp
int main()
{
}

После того как все три файла создал выполни make

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "FreeBSD, std::locale problem"  
Сообщение от eudo email(??) on 04-Янв-08, 18:29 
>Может это тебе поможет http://www.opennet.me/docs/RUS/linux_parallel/node248.html
>И еще нужно вроде при компановке такой флаг указать:
>LDFLAGS = -lstdc++ -lrpcsvc -g (не уверен)

Спасибо, но это не из этой оперы :)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру