2010-10-28-01-文字コードの話 - 6 - project-enigma

2010-10-28-01-文字コードの話 - 6

>> Site top >> weblog >> 月別アーカイブ >> 2010年10月のlog >> 2010-10-28-01-文字コードの話 - 6

最終更新日付:2013/12/31 07:35:54


文字コードの話 - 6

2010 年 10 月 28 日

さて、次はこの仕組みが具体的に何をサービスしているか、という話だ。

原則としては、エンコーディングの違いによって実装に違いが出るような文字列操作および文字操作の関数を実装している。その中でももっとも基本的なのは、ポインタを「1文字分」前後させる Increment/Decrement 、およびポインタが指す文字の値を取得するGetCharValue、現在のポインタ位置に指定した値の文字を設定する PlaceChar だろう。これらをベースとして、各種のメソッドが実装される。

実装している各種メソッドには C標準ライブラリの関数名から類推可能な名前が付けられている。StrStr や StrCmp、StrCpy などだ‥‥‥が、もちろん全てではない。とりあえずは自分が必要とするものから順に追加しているからだ(最近まで StrCat さえなかった!)。

一番面倒だったのは、文字種を判別するタイプのサービスだ。マルチバイトエンコーディングを考慮した文字列操作処理はどうしても遅くなるから、文字種判別はテーブルルックアップで実装している。これらには、IsAscii, IsAlNum, IsAlpha, IsUpper, IsLower, IsDigit などがある。

くどいようだが、現時点で実装しているのはは文字と文字列の操作、および文字種の判別くらいだ。つまり与えた文字列のエンコーディングを自動判別したり、文字列のエンコーディングを変換するような機能は持っていない‥‥‥とはいえ、この2つは欲しいような気がする。次回はこれについて書くとしよう。

 

コメント

このページにコメントする

 

このページのタグ

Page tag : 開発

 

 


Copyright(C) 2005-2017 project-enigma.
Generated by CL-PREFAB.