escaped_list_separator_sjis class


0.01

The escaped_list_separator_sjis class. 
この class は、Boost.tokenizer へ渡す関数オビジェクト(TokenizerFunction) escaped_list_separator class(Boost token_functions.hpp で定義)を一部改変し、 Shift-jis 漢字コードを正しく処理できるようにしたものです。

Boost.tokeniser ライブラリでは、tokeniser テンプレートクラスに、 分割したい文字列と、分割基準を定めたオブジェクト(TokenizerFunction)を渡すと、 分割済みの文字列(トークン)としてアクセスすることができます。

Boost.tokeniser については、 http://www.boost.org/libs/tokenizer/ の documentation を参照してください。

escaped_list_separator class は、この TokenizerFunction の実装のひとつで、 いわゆる CSV(comma separated value) list のスパーセットになっています。 それは、コンマ(,)または他の文字(delimiting character)によって、フィールドに分割されます。 delimiting character が、クウォート("")で囲まれたフィールドの中にある場合は、 (delimiting character としてではなく)通常の文字として処理されます。 フィールドへのクウォーテンションマーク(")自身の埋め込みを許すために、C 言語の様に エスケープシーケンスが使われます。コンマ(,)、クウォーテンションマーク(")と エスケープ文字(\)は、他の文字に割り当てることが可能です。

しかし、エスケープ記号として、"\" (0x5C)が用いられるとき、処理すべき文字列に、 漢字(Shift-jis)があると、不具合が生じることがあります。 それは、Shift-jisでは、第2バイト目にこの "\" と同じコードがくる 文字(例えば、「ソ」、「申」、「十」等)があるからです。、 そうすると、その文字の次の文字(あるいは次の Shift-jis 漢字の第1バイト目)とのセット をエスケープシケースとして扱ってしまい、正しく処理できません。 そこで、この escaped_list_separator_sjis class では、 escaped_list_separator class コードの一部を改変して分割対象の文字列中の 漢字(Shift-jis)を正しく扱うコードを付け足しています。

escaped_list_separator class は、  

http://www.boost.org/boost/token_functions.hpp
Copyright John R. Bandela 2001 
Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
中で定義されています。

※ Shift-jis については、 http://ja.wikipedia.org/wiki/Shift_JIS 等を参照。 
※ Comma Separated Value(CSV) については、 http://ja.wikipedia.org/wiki/Comma-Separated_Values 等を参照。


Generated on Mon Aug 27 21:05:40 2007 for DachunzhuEscListSepSjis by  doxygen 1.5.3
inserted by FC2 system