C++ Boost

Escaped List Separator

escaped_list_separator<Char, Traits = std::char_traits<Char> >

escaped_list_separator クラスは TokenizerFunction の実装である。escaped_list_separator はcsv (comma separated value) フォーマットの上位集合を構文解析する。 このフォーマットの例を以下に示す。デフォルトの区切り文字としてはクォーテーション記号とエスケープ文字が使われることが想定されている。

Field 1,Field 2,Field 3
Field 1,"Field 2, with comma",Field 3
Field 1,Field 2 with \"embedded quote\",Field 3
Field 1, Field 2 with \n new line,Field 3
Field 1, Field 2 with embedded \\ ,Field 3

フィールドは通常コンマによって区切られる。フィールド内にコンマを入れたい場合は、その周りをクォーテーション記号で囲む必要がある。 また、さらに3つのエスケープシーケンスがサポートされている。

エスケープシーケンス

結果

<escape><quote> <quote>
<escape>n 改行
<escape><escape> <escape>

<quote> はクォーテーション記号として指定された何らかの文字であり、 <escape> はエスケープ文字として指定された何らかの文字である。

Example

// simple_example_2.cpp
#include<iostream>
#include<boost/tokenizer.hpp>
#include<string>

int main(){
   using namespace std;
   using namespace boost;
   string s = "Field 1,\"putting quotes around fields, allows commas\",Field 3";
   tokenizer<escaped_list_separator<char> > tok(s);
   for(tokenizer<escaped_list_separator<char> >::iterator beg=tok.begin(); beg!=tok.end();++beg){
       cout << *beg << "\n";
   }
}

 

Construction and Usage

escaped_list_separator には2つのコンストラクタがある。それらを以下に示す。

explicit escaped_list_separator(Char e = '\\', Char c = ',',Char q = '\"')

引数

説明

e エスケープシーケンスのために使用する文字を指定する。 デフォルトは C 形式の \ (バックスラッシュ)である。 しかしながら、異なる文字を渡すことによってオーバーライドすることができる。 例えば、Windows スタイルのファイル名のフィールドが多く存在する場合、 パスの中に含まれる全ての \ をエスケープシーケンスに置き換える代わりに、 エスケープシーケンスのために使用する文字を何か別の文字に変更すれば良い。
c フィールドを区切るために使用される文字を指定する。
q クォーテーション記号として使用する文字を指定する。

 

escaped_list_separator(string_type e, string_type c, string_type q):

引数

説明

e 文字列 e に含まれる文字をエスケープ文字とする。もし空の文字列が指定された場合は、エスケープ文字は存在しなくなる。
c 文字列 c に含まれる文字を区切り文字とする。もし空の文字列が指定された場合は、区切り文字は存在しなくなる。
q 文字列 q に含まれる文字をクォーテーション記号とする。もし空の文字列が指定された場合は、クォーテーション記号は存在しなくなる。

 

このクラスを使用するためには、TokenizerFunctionが要求される場合、そのオブジェクトをTokenizerパッケージのいかなる場所にも渡してください。

 

Template Parameters

引数 説明
Char トークンの要素の型。通常は char である。
Traits Char 型の特性クラス。Char の比較の為に使用される。デフォルトは std::char_traits<Char> である。

 

Model of

TokenizerFunction

 


© Copyright John R. Bandela 2001. Permission to copy, use, modify, sell and distribute this document is granted provided this copyright notice appears in all copies. This document is provided "as is" without express or implied warranty, and with no claim as to its suitability for any purpose.

Japanese Translation Copyright © 2003 Akihiro Yamasaki
オリジナルの、及びこの著作権表示が全ての複製の中に現れる限り、この文書の複製、利用、変更、販売そして配布を認める。このドキュメントは「あるがまま」に提供されており、いかなる明示的、暗黙的保証も行わない。また、いかなる目的に対しても、その利用が適していることを関知しない。