Добрый всем вечер.Столкнулся с такой проблемой, 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
Может это тебе поможет 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 -gPROG = 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 .dependdepend: .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}.rarall: depend ${PROG}
3) primer.cpp
int main()
{
}После того как все три файла создал выполни make
>Может это тебе поможет http://www.opennet.me/docs/RUS/linux_parallel/node248.html
>И еще нужно вроде при компановке такой флаг указать:
>LDFLAGS = -lstdc++ -lrpcsvc -g (не уверен)Спасибо, но это не из этой оперы :)