| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > использование STL разных разработчиков |
| Автор: gorby 18.2.2009, 19:32 | ||
| Господа, недавно я решил использовать несколько шаблонов из STL. Зачем придумывать свое, если есть готовое.
И попал в засаду. На двух платформах разный вывод Euros: EUR55.000,55 - in Microsoft Visual C++ 2008 (ожидаемый результат) Euros: 5500055 -- in MinGW-3.3.1 ----------------------------------------------------- Может быть кто-то сталкивался с чем то подобным. И как с этим можно бороться. Спасибо. |
| Автор: jonie 19.2.2009, 09:09 | ||
|
| Автор: Dmi3ev 19.2.2009, 09:59 |
| http://www2.roguewave.com/products/whitepapers.cfm?paper=spcint2 http://msdn.microsoft.com/en-us/library/aa479681.aspx http://www.cantrip.org/locale.html http://www.tacc.utexas.edu/services/userguides/pgi/pgC++_lib/stdlibug/sta_9169.htm |
| Автор: vinter 19.2.2009, 10:03 |
| по моему эти строки вообще не стандартизированы, но я чаще видел запись типа de_DE, а не german. В любом случае эти строки implementation defined.. |
| Автор: Dmi3ev 19.2.2009, 10:21 | ||
я тоже встречал de_DE. |
| Автор: jonie 19.2.2009, 10:47 | ||
| http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html тут пишут вот чего:
так что имхо "german" нифига не по стандарту. |
| Автор: gorby 19.2.2009, 12:22 |
| Спасибо за оперативный ответ. Я сейчас проверю, как это работает. |
| Автор: gorby 19.2.2009, 14:14 |
| Попробовал поменять строку locale locGerm("german"); на locale locGerm("De_DE"); --------------------------------------------------- результаты исследования Microsoft Visual C++ 2008 на строке locale locGerm("De_DE"); получил Unhandled exception --------------------------------------------------- MinGW-3.3.1 результат без изменений Euros: 5500055 -- in MinGW-3.3.1 --------------------------------------------------- ps. Мне нужно добиться правильного (ожидаемого) результата в среде в MinGW-3.3.1 замена De_DE на de_DE ничего не меняет. |
| Автор: bsa 19.2.2009, 17:45 |
| нужно: "de_DE" Еще попробуй en_US, может что изменится. |
| Автор: vinter 19.2.2009, 18:28 |
| строки не стандартизированы, хочешь корректного поведения при кроссплатформенности - используй макросы |
| Автор: gorby 20.2.2009, 11:57 | ||
Спасибо за подсказку. Прошу Вас чуть подробнее. (Я полагаю, что знаю что такое макросы) |
| Автор: bsa 20.2.2009, 15:19 | ||
gorby
|
| Автор: gorby 20.2.2009, 17:51 |
| Я прошу прощения, если кого то ввел в заблуждение неточной формулировкой. Я написал На двух платформах разный вывод Но, меня интересует ожидаемый результат на одной платформе. MinGW-3.3.1 MS я использовал только для выяснения причин неправильной работы на MinGW-3.3.1 А для нескольких платформ конечно макросы это самое то. |
| Автор: jonie 21.2.2009, 11:14 |
| порыл исходники в VS. нашел вот чего. собственно сам формат локали у майкрософта судя по всему такой: "язык.страна,кодировка" (см setlocal.c функция __lc_strtolc ) далее вызывается функция __get_qualified_locale, которая по указанной структуре (язык,страна,кодировка) получает собсна локаль (в виде трех WORD-ов, упакованных в структуру)... ...... в общем-то есть такая хрень Microsoft Locale Builder. также я нашел в msdn такую статью: http://msdn.microsoft.com/en-us/library/dd373765(VS.85).aspx есть еще ISO стандарт на колонку "Script tag" оттуда : http://www.unicode.org/iso15924/iso15924-codes.html может быть информация будет полезна Добавлено через 6 минут и 22 секунды http://msdn.microsoft.com/ru-ru/magazine/cc163506.aspx еще инфа по стандартам |