文字エンコーディング変換モジュールです!
シフトJIS,JIS,EUC,UNICODE(UTF-8,UTF-16,UTF-32)に対応していずれの組み合わせであろうと相互変換できます。
×国際化対応の為のものではありません!
国際化対応を前提とする場合、MLang, iconv, ICU あたりを推奨します。
6
強いて制限を挙げるなら…
「バベルはワシが作った」とか言い出さないで。
第三者から俺が盗人呼ばわりされるのはさすがに勘弁!
万が一なにか問題があっても「自己責任」で。
俺に責任追及されてもそんなの知らん!
13
まずバベルをここからダウンロードします!
http://tricklib.com/cxx/ex/babel/#download
※一番下の[バベル全ファイルZIPパック]がオススメ
21
次にダウンロードした各ファイルをバベルを利用するプログラムのソースファイルを置いているディレクトリにコピーします。
※babel.h と babel.cpp だけでなく*.csv, *.dat も同じディレクトリに一緒にコピーしてください。
22
文字エンコーディング変換関数を呼び出します。
25
void f(){
std::string source, destination;...// 全自動変換destination = babel::auto_translate<>(source);...// ShiftJIS→EUC変換destination = babel::sjis_to_euc(source);
}
変換関数の一覧: http://tricklib.com/cxx/ex/babel/#functions
ストリーム
27
using namespace babel;
void execute_translater(std::istream &input, std::ostream &output, bbl_translater<bbl_binary, bbl_binary> translater){
bbl_binary buffer;bbl_binary buffer2;while(!input.eof()){
bbl_binary::value_type buffer3[1024];input.read(buffer3, 1024);unsigned int size = input.gcount();buffer.assign(buffer3, size);translater << buffer;translater >> buffer2;output << buffer2;
}}
void f(){
…execute_translater(std::ifstream(“src.txt”), std::cout, auto_translate_engine<bbl_string>::create());…
}
処理系(コンパイラ)の文字エンコーディング
__USING_ANSI__
__USING_SJIS__
__USING_EUC__
__USING_UTF8__
× __USING_UNKNOWN__
32
テーブルの形式 __BBL_USING_STATIC_TABLE__ ( default ) 静的なテーブルを使用し、 babel::init_babel() の処理時間も非常に短くなります。
コンパイラに負荷をかける為、コンパイルできないことがあります。 ※コンパイラのオプションで問題を回避できる場合もあり。
__BBL_USING_STDMAP_TABLE__ 静的なテーブルの代りに std::map を使用し、
babel::init_babel() の処理時間も長くなり、メモリ消費量も増大します。
33
SJIS⇔UNICODE変換で使用するマッピング
__BBL_USE_UNICODE_MAP_CP932__ ( default )
__BBL_USE_UNICODE_MAP_UTC__
__BBL_USE_UNICODE_MAP_APPLE__
34
使用しないコードとデータの除去
__BBL_DISABLE_UNICODE__
__BBL_DISABLE_BINARY__
__BBL_DISABLE_UTF32__
※この指定だけは babel.h で始めから固定で定義されています。 UTF-32 の実装が必要な場合にこのマクロの#define を babel.h から削除してください。
__BBL_DISABLE_SELECTORS__
35