Locale

ワイド文字列(wstring, wchar_t)を環境のエンコードにおける順序でソートする

#include <locale> #include <string> #include <algorithm> #include <iostream> #include <iterator> int main() { using namespace std; locale::global(locale("")); wstring str[] = {L"亜", L"井", L"宇", L"江", L"尾"}; sort(str, str + 5); cout << "Unicode(UCS)でのソート結果" << endl; copy(s</iterator></iostream></algorithm></string></locale>…

Boost.Regex + Locale

あー,でも先頭からちゃんとvalidな長さ読んでくれないと困るにゃー.というか,細かいところでlocaleをどう使っているのかを調べないと・・・.

Boost.Regex + Locale

う? というか,localeにcharからwchar_tへのコード変換ファセットかwchar_tでcollationとる文字照合ファセット突っ込めば,わざわざwchar_tに変換せずにcharのままでマルチバイト文字の正規表現が取れる? る? るる? るるる? るるるるる?

Boost.Regex + Locale

href="http://cvs.sourceforge.net/viewcvs.py/*checkout*/boost/boost/libs/regex/Attic/traits_class_ref.htm?rev=1.11 うふ. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1429.htm#traits_discussion うふふ. うふふふふ. うふふふふふ…

ロケール,ロケール,ロケール!

Collation周りも超面白そうな予感.見てる限りいろんなこと出来そう. std::vector<std::wstring> str_vec; ..... // ワイド文字列をShift_JIS文字列としてソートする std::sort(str_vec.begin(), str_vec.end(), ucs_as_sjis_loc);こんなんとか出来そうに読める.うふ,う</std::wstring>…

自分でstd::codecvtを拡張する

上で用いているutf8_codecvt_facet_wchar_tはstd::codecvtの一実装に過ぎません.ユーザはstd::codecvtからクラスを派生させて独自のコード変換ファセットを定義することが可能です.もちろん,そうして作成したファセットを上とまったく同様にストリームに…

UTF-8Nを吐くワイドストリーム

1昨日ブログで書いたことをコードで示すとこんな感じになります. #include <fstream> #include <locale> // Boost 1.32.0からBOOST_ROOT/boost/utf8_codecvt_facet.hppと // BOOST_ROOT/libs/serialization/src/utf8_codecvt_facet.cppを // 掘り出してきてカレントにコピー</locale></fstream>…

streamの真価

C++のストリームってどうも気に入らないなあと思っていたけれど,標準のlocaleライブラリ周りの記述漁っていると考え方変わりそう. もしかして,自分はC++のstreamやlocaleの真価を知らないだけで実は超強力なライブラリなんじゃないか,と. 本が待ち遠し…

標準C++が想定するストリームによる入出力時の自動coding変換の枠組み

うん.なんていうかね.Boost.Serializationのutf8_codecvt_facet.hppとutf8_codecvt_facet.cppの実装を追ってたのよ.(RC枝から引っ張ってきたやつ)いやcoding変換の実装を追うのは楽しかったですよ?何せ実装が極めて素直だから,うにコード超初心者の自…

これだけは手を出さずに済ませたかった

が,仕事上そうも言っていられなくなってきた.っていうかこれって日本人としてC++をやる以上避けては通れない問題だしにゃ〜.とりあえず資料集めと勉強. 一応目標は以下. C++標準で定義されるバイト志向(char, string, stream)とワイド志向(wchar_t, w…