encode.h 文字コード変換 (作りかけ)
ファイルとディレクトリを扱うためのヘッダファイル.kstm.orgの活動の一環としてつくられたソフトの一部だった気もしますが,原型はとどめてません.
iconvもしくは,Win32APIを使います.Win32APIは対応している文字コード少ない….
利用の制限はありません.個人の責任において自由に使ってください.
サンプル
- VC++: cl encode.cpp
- gcc: g++ encode.cpp -I/usr/local/include -L/usr/local/lib -liconv
#include <iostream> #include <string> #include <vector> #include "encode.h" using namespace std; using namespace Encode; int main(int argc,char *argv[]) { string s = "ABCあいう123漢字aa"; string t=encode(s,SJIS,UTF8); cout << t << endl; cout << "SJIS: "; for (SJIS_IteratorS it(s.begin(),s.end());!it.eof(); ) cout << it.shift() << " "; cout << endl; vector<int> a; cout << "UTF-8: "; for (UTF8_IteratorS it(t.begin(),t.end());it!=t.end();++it ) { cout << *it << " "; a.push_back(*it); } cout << endl; string utf; stringEncode_UTF8(utf,a.begin(),a.end()); cout << utf << endl; for (UTF8_IteratorS it(utf.begin(),utf.end());it!=utf.end();++it ) { cout << *it << " "; } return 0; }
中身
Encode::encode()だけ使えばよいと思います.
- encode(src,from,to) 文字コード変換
- SJIS_Iterator ShiftJIS文字列から一文字ずつ取り出すためのイテレータ
- UTF8_Iterator UTF-8文字列から~以下同じ
イテレータは不正な文字列を入れると誤動作するので,そのエンコードで正当な文字列を渡してください.JIS_Iteratorはたぶん動きません.
履歴
- 2010-01-02 公開
- 2010-01-18 文字イテレータ周りの細かい修正
Copyright © binzume all rights reserved.