·å¶èÀÚ¤ê#2016-12-14: C++ ´ØÏ¢¤Ê¤ó¤À¤±¤É¡¢
Cygwin ¤Ç std::locale("") ¤È¤« std::locale("ja_JP.UTF-8") ¤È¤«¤¬Á´Á³Ä̤é¤Ê¤¤¡£
std::locale() ¤È¤« std::locale("C") ¤ÏÄ̤ë¤ó¤À¤±¤É¡¢¤É¤¦¤·¤¿¤é¤¤¤¤¤ó¤À¤³¤ì¡©
¤É¤¦¤â Cygwin ¤ÎÌäÂê¤Ë¤Ï°ã¤¤¤Ê¤¤¤ó¤À¤±¤É¡¢libstdc++ ¤Î¥³¥ó¥Ñ¥¤¥ë¥ª¥×¥·¥ç¥ó¤ÎÌäÂê¤Î¤è¤¦¤Ç¡¢°Ê²¼¤Î¤è¤¦¤Ê¥Ý¥¹¥È¤¬¸«¤Ä¤«¤Ã¤¿¡£
¾åµ stackoverflow ¤ÎÅê¹Æ¤Ë boost::locale::generator ¤Ç locale À¸À®¾ë¤ß¤¿¤¤¤Ê¤³¤È½ñ¤¤¤Æ¤¢¤ë¤ó¤À¤±¤É¡¢Cygwin ¤À¤È¡¢
ºÇ½ª¼êÃʤȤ·¤Æ¤Ï libstdc++ ºÆ¥³¥ó¥Ñ¥¤¥ë²¿¤À¤í¤¦¤±¤É¡¢¤½¤ì¤Ï¤Á¤ç¤Ã¤ÈÌÌÅݽ²á¤®¤ë¡£
Cygwin ¤Ç std::locale("") ¤È¤« std::locale("ja_JP.UTF-8") ¤È¤«¤¬Á´Á³Ä̤é¤Ê¤¤¡£
std::locale() ¤È¤« std::locale("C") ¤ÏÄ̤ë¤ó¤À¤±¤É¡¢¤É¤¦¤·¤¿¤é¤¤¤¤¤ó¤À¤³¤ì¡©
#include <iostream> #include <locale> #include <stdexcept> int main() { try { std::locale loc(""); std::cout << loc.name() << std::endl; } catch (std::runtime_error &e) { std::cout << e.what() << std::endl; } return 0; }
$ locale -a | grep ja ja_JP ja_JP.utf8 ja_JP@cjknarrow ja_JP.utf8@cjknarrow $ echo $LANG ja_JP.UTF-8@cjknarrow $ g++ stdlocaletest.cpp && ./a locale::facet::_S_create_c_locale name not valid $ g++ stdlocaletest.cpp -o stdlocaletest && LANG= ./stdlocaletest C $ g++ stdlocaletest.cpp -o stdlocaletest && LANG=C ./stdlocaletest C $ g++ stdlocaletest.cpp -o stdlocaletest && LANG=ja ./stdlocaletest locale::facet::_S_create_c_locale name not valid $ g++ stdlocaletest.cpp -o stdlocaletest && LANG=ja_JP ./stdlocaletest locale::facet::_S_create_c_locale name not valid $ g++ stdlocaletest.cpp -o stdlocaletest && LANG=ja_JP.UTF-8 ./stdlocaletest locale::facet::_S_create_c_locale name not valid
- stackoverflow
- Into the Horizon / 2012-06-29: c++¤ÇÆüËܸì¤Î½èÍý¡Ê¥í¥±¡¼¥ë¼þ¤ê¡Ë 7/8Äɵ
- Hatena::Diary
- EAGLE »¨µ / 2009-02-08: [C/C++][GCC][2ch] libstdc++ ¤Î¥í¥±¡¼¥ëÌäÂê
- GONE WITH THE MEDICINE / 2010-12-02: g++ ¤Çwcout»È¤Ã¤ÆÆüËܸì¤ò¥³¥ó¥½¡¼¥ë¤Ë½ÐÎÏ
¾åµ stackoverflow ¤ÎÅê¹Æ¤Ë boost::locale::generator ¤Ç locale À¸À®¾ë¤ß¤¿¤¤¤Ê¤³¤È½ñ¤¤¤Æ¤¢¤ë¤ó¤À¤±¤É¡¢Cygwin ¤À¤È¡¢
boost::locale::generator gen; std::cout << gen("").name() << std::endl;¤È¤«¤ä¤Ã¤Æ gen() ¤Ë ²¿¶ô¤ï¤·¤Æ¤ä¤Ã¤Æ¤â .name() ¤Ë "*" ¤·¤«Ê֤äÆÍè¤Ê¤¤¤Î¤Ç¡¢exception Èò¤±°Ê³°¤Î¸ú²Ì¤¬¸«¹þ¤á¤Ê¤«¤Ã¤¿¡£
ºÇ½ª¼êÃʤȤ·¤Æ¤Ï libstdc++ ºÆ¥³¥ó¥Ñ¥¤¥ë²¿¤À¤í¤¦¤±¤É¡¢¤½¤ì¤Ï¤Á¤ç¤Ã¤ÈÌÌÅݽ²á¤®¤ë¡£
- ¥«¥Æ¥´¥ê¡§
- ¥Ñ¥½¥³¥ó
- ¥×¥í¥°¥é¥ß¥ó¥°
¥¿¥°
¥³¥á¥ó¥È¤ò¤«¤¯