# TextFile

## 概要 - Abstract

このライブラリ file.TextFile は、汎用的なテキストファイル入出力の機能を提供します。
特に、CSV形式やTSV形式のファイル入出力をサポートします。

そもそもVCSSLでは、最初期のバージョンから、CSV形式やTSV形式を含む、基礎的なテキストファイル入出力機能が標準でサポートされています。
しかし、初期のVCSSLが専ら数値計算を目的とした言語であった事から、これらの機能も数値データファイルの入出力を前提とした仕様となっており、汎用的な用途においては不便な点もあります。
例えば、VCSSLの標準機能である System.open(string filePath, string mode) 関数でCSV形式やTSV形式のファイルを開く事ができますが、これは数値データファイルの操作を想定して設計された機能であるため、非常に単純な動作を行います。特別な記号のエスケープや、値を必要に応じてダブルクォーテーションで囲むなどの処理は行われません。
（ その代わり、数値データファイルの入出力では高速に動作します。 ）

そこで、このモジュールでは、数値データファイルのみならず、より汎用的なテキストファイル入出力機能を提供する事を目的としています。
例えば書き込みにおいては、値がカンマ(CSV時)やタブ(TSV時)などの区切り文字を含む場合、値全体がダブルクォーテーションで囲まれます。値が改行を含む場合も同様です。
読み込み時においても、ダブルクォーテーションで囲まれた部分は、まとめて一つの値として読み込まれ、その中に区切り文字や改行を含んでいても問題ありません。

また、書き込む値がダブルクォーテーションを含む場合は、連続したダブルクォーテーションにエスケープされます。
読み込み時においても、連続したダブルクォーテーションはエスケープされているものとして扱われます。

なお、このモジュールでは、一般的なCSV形式やTSV形式だけでなく、区切り文字（デリミタ）や引用符（エンクロージャ）の記号を明示的に指定する事も可能です。

## 目次 - Index

struct TextFile
  テキストファイル構造体です。ファイルIDなどのシステムリソースや、区切り文字情報などを保持します。
const string READ
  汎用テキストファイルの「読み込み」モードです。区切り文字（デリミタ）及び引用符記号（エンクロージャ）は設定されません。引用符の挙動は ENCLOSED_NONE が適用されます。
const string WRITE
  汎用テキストファイルの「書き込み」モードです。区切り文字（デリミタ）及び引用符記号（エンクロージャ）は設定されません。引用符の挙動は ENCLOSED_NONE が適用されます。
const string APPEND
  汎用テキストファイルの「追記」モードです。区切り文字（デリミタ）及び引用符記号（エンクロージャ）は設定されません。引用符の挙動は ENCLOSED_NONE が適用されます。
const string READ_TSV
  TSV形式ファイルの「読み込み」モードです。区切り文字（デリミタ）はタブ記号、引用符記号（エンクロージャ）はダブルクォーテーションに設定されます。引用符の挙動は ENCLOSED_IF_NECESSARY が適用されます。
const string WRITE_TSV
  TSV形式ファイルの「書き込み」モードです。区切り文字（デリミタ）はタブ記号、引用符記号（エンクロージャ）はダブルクォーテーションに設定されます。引用符の挙動は ENCLOSED_IF_NECESSARY が適用されます。
const string APPEND_TSV
  TSV形式ファイルの「追記」モードです。区切り文字（デリミタ）はタブ記号、引用符記号（エンクロージャ）はダブルクォーテーションに設定されます。引用符の挙動は ENCLOSED_IF_NECESSARY が適用されます。
const string READ_CSV
  CSV形式ファイルの「読み込み」モードです。区切り文字（デリミタ）はカンマ記号、引用符記号（エンクロージャ）はダブルクォーテーションに設定されます。引用符の挙動は ENCLOSED_IF_NECESSARY が適用されます。
const string WRITE_CSV
  CSV形式ファイルの「書き込み」モードです。区切り文字（デリミタ）はカンマ記号、引用符記号（エンクロージャ）はダブルクォーテーションに設定されます。引用符の挙動は ENCLOSED_IF_NECESSARY が適用されます。
const string APPEND_CSV
  CSV形式ファイルの「追記」モードです。区切り文字（デリミタ）はカンマ記号、引用符記号（エンクロージャ）はダブルクォーテーションに設定されます。引用符の挙動は ENCLOSED_IF_NECESSARY が適用されます。
const int ENCLOSED_ALL
  全ての値を引用符記号（エンクロージャ）で囲むオプションです。
const int ENCLOSED_IF_NECESSARY
  必要な値のみ引用符記号（エンクロージャ）で囲むオプションです。CSV/TSV形式ファイルのデフォルト設定値です。
const int ENCLOSED_NONE
  どの値も引用符記号（エンクロージャ）で囲まないオプションです。汎用テキストファイルのデフォルト設定値です。
TextFile openTextFile(string filePath, string mode)
  ファイル名とモードを指定して、テキストファイルを開きます。モードは下記の定数から選択します。 WRITE : 特に何も設定されていない、汎用テキストファイル用の書き込みモードです。設定を独自に行う事もできます。 , APPEND : 特に何も設定されていない、汎用テキストファイル用の追記モードです。設定を独自に行う事もできます。 , READ : 特に何も設定されていない、汎用テキストファイル用の読み込みモードです。設定を独自に行う事もできます。 , WRITE_CSV : CSV（カンマ区切り）ファイル用に設定された書き込みモードです。 , APPEND_CSV : CSV（カンマ区切り）ファイル用に設定された追記モードです。 , READ_CSV : CSV（カンマ区切り）ファイル用に設定された読み込みモードです。 , WRITE_TSV : TSV（タブ区切り）ファイル用に設定された書き込みモードです。 , APPEND_TSV : TSV（タブ区切り）ファイル用に設定された追記モードです。 , READ_TSV : TSV（タブ区切り）ファイル用に設定された読み込みモードです。 ,
TextFile openTextFile(string filePath, string mode, string textEncoding)
  ファイル名、モード、文字コードを指定して、テキストファイルを開きます。モードは下記の定数から選択します。 WRITE : 特に何も設定されていない、汎用テキストファイル用の書き込みモードです。設定を独自に行う事もできます。 , APPEND : 特に何も設定されていない、汎用テキストファイル用の追記モードです。設定を独自に行う事もできます。 , READ : 特に何も設定されていない、汎用テキストファイル用の読み込みモードです。設定を独自に行う事もできます。 , WRITE_CSV : CSV（カンマ区切り）ファイル用に設定された書き込みモードです。 , APPEND_CSV : CSV（カンマ区切り）ファイル用に設定された追記モードです。 , READ_CSV : CSV（カンマ区切り）ファイル用に設定された読み込みモードです。 , WRITE_TSV : TSV（タブ区切り）ファイル用に設定された書き込みモードです。 , APPEND_TSV : TSV（タブ区切り）ファイル用に設定された追記モードです。 , READ_TSV : TSV（タブ区切り）ファイル用に設定された読み込みモードです。 , また、文字コードは下記の文字列リテラルから選択ます。 "Shift_JIS" : Shift_JIS です。ハイフン（ - ）では無くアンダーバー（ _ ）である事に注意して下さい。 , "UTF-8" : UTF-8 です。アンダーバー（ _ ）では無くハイフン（ - ）である事に注意して下さい。 , "EUC-JP" : EUC-JP です。アンダーバー（ _ ）では無くハイフン（ - ）である事に注意して下さい。 ,
void close(TextFile &textFile)
  テキストファイルへのアクセスを閉じます。特に書き込みアクセス後には、バッファされている内容を最後まで書き込み切るためにも、必ず呼び出す必要があります。
string getEndOfLineCode(TextFile &textFile)
  ファイル入出力に使用する改行コードを取得します。読み込みモードでは、ファイルに使用されている改行コードを解析し、CR+LF, CR, LF の3つから適切と思われるものを返します。複数の改行コードが混在している場合は、優先度の高いほうから CR+LF, CR, LF の順番で判定します。それらのどれにも該当しない場合は NULL を返します。なお、setEndOfLineCode 関数で改行コードを明示指定した後は、その指定値が返されます。
void setEndOfLineCode(TextFile &textFile, string endOfLineCode)
  ファイル入出力に使用する改行コードを指定します。改行コードの指定には、System ライブラリに定義されている、以下の定数を使用する事が推奨されます。 LF : 文字コードで 0x0A, 一般的なエスケープシーケンスで \n に対応する改行コードです。 , CR : 文字コードで 0x0D, 一般的なエスケープシーケンスで \r に対応する改行コードです。 , CR+LF : 文字コードで 0x0D 0x0A, 一般的なエスケープシーケンスで \r\n に対応する改行コードです。（これは1つの定数では無く、CRとLFを加算した式です。） , EOL : 実行環境におけるデフォルトの文字コードを表します。通常は CR, LF, CR+LF のいずれかが使用されます。 ,
void setCommentLineCode(TextFile &textFile, string commentLineCode)
  コメント行を表す行頭文字列を指定します。ここで指定した文字列で始まる行は、読み込み時に無視されます。また、commentln 関数でコメント行を出力する際に、ここで指定した文字列が使用されます。なお、読み込みモードの場合、この関数をコールした時点で、どこまでファイルを読み込んだかの情報は初期化されます。この項目は、デフォルトでは何も設定されていないため、コメント行を考慮する際は必ず設定する必要があります。一般的によく用いられる行頭文字列は、以下のようなものがあります。 "#" (ナンバー記号) : CSV/TSVファイルや、スクリプトなどによく用いられます。 , ":" （コロン） : 一部の設定ファイルやスクリプトなどで用いられます。 , ";" （セミコロン） : 一部の設定ファイルやスクリプトなどで用いられます。 , "//" （ダブルスラッシュ） : 一部のプログラミング言語で用いられます。 ,
string getCommentLineCode(TextFile &textFile)
  コメント行を表す行頭文字列を返します。
bool isReadable(TextFile &textFile)
  ファイルが読み込み可能な状態であるか確認します。
bool isWritable(TextFile &textFile)
  ファイルが読み込み可能な状態であるか確認します。
void setDelimiter(TextFile &textFile, string delimiter)
  値の区切り文字（デリミタ）を設定します。区切り文字を設定すると、 read 関数やreadln 関数が、値を区切って配列として返すようになります。一般的によく用いられる区切り文字は、以下のようなものがあります。また、write 関数やwritelnが、書き込み時に値を区切り文字で区切るようになります。 "," (カンマ記号) : CSVファイルに用いられます。 , " " (タブ記号) : TSVファイルに用いられます。 , " " (半角スペース記号) : SSVファイルに用いられます。 , ";" (セミコロン記号) : 一部の設定ファイルに用いられます。 , なお、読み込みモードの場合、この関数をコールした時点で、どこまでファイルを読み込んだかの情報は初期化されます。
void setEnclosure(TextFile &textFile, string enclosure, string enclosureEscapeCharacter, int enclosingOption)
  値を囲む引用符記号（エンクロージャ）を設定します。引用符記号を設定すると、write 関数やwritelnが、書き込み時に値を引用符記号で囲むようになります。また、read 関数やreadln 関数が、読み込み時に引用符記号を解釈するようになります。引用符記号は、enclosure に指定します。引数一般によく用いられる引用符記号は、以下のようなものがあります。 "\"" （ダブルクォーテーション） : 「 " 」記号です。CSV/TSV形式ファイルでよく用いられます。 VCSSLでは、ダブルクォーテーションは特別な意味を持つため、 このように "\"" というようなリテラルで指定します。 , "'" （シングルクォーテーション） : 一部のファイルで使用されます。 , なお、値が必ず引用符記号で囲まれるべきか、必要な場合のみ囲まれるべきかは、引数のオプション enclosingOption で指定します。このオプションの指定値は以下の定数から選択します。 ENCLOSED_ALL : 値が必ず引用符で囲まれる形式です。 , ENCLOSED_IF_NECESSARY : 必要な場合のみ、値が引用符記号で囲まれる形式です。必要な場合とは、書き込み/読み込み内容が、 「 区切り文字（デリミタ）、引用符記号、コメント行頭記号、改行 」のいずれかを含む場合です。 , ENCLOSED_NONE : いかなる場合においても、値が引用符で囲まれない形式です。 , もしも、引用符記号で囲む値が、さらに引用符記号を含んでいる場合、それは別の記号でエスケープされる必要があります。これは引数 enclosureEscapeCharacter で指定します。一般的によく用いられるエスケープ記号は、以下のようなものがあります。 "\"" （ダブルクォーテーション） : 「 " 」記号です。CSV/TSV形式ファイルで、 引用符記号がダブルクォーテーションの場合、よく用いられます。 エスケープ結果は連続したダブルクォーテーションとなります。 VCSSLでは、ダブルクォーテーションは特別な意味を持つため、 このように "\"" というようなリテラルで指定します。 , "\\" （バックスラッシュ） : 「 \ 」記号です。プログラミング言語などでよく使用されます。 VCSSLでは、バックスラッシュは特別な意味を持つため、 このように "\\" というようなリテラルで指定します。 , なお、読み込みモードの場合、この関数をコールした時点で、どこまでファイルを読み込んだかの情報は初期化されます。
void write(TextFile &textFile, ... string value[ ])
  テキストファイルに文字列を書き込みます。複数の内容を指定した場合、区切り文字（デリミタ）が設定されていれば、間に区切り文字を挟んで書き出します。また、必要に応じて値を引用符で囲んで書き出します。引用符でどのように囲むかの設定は、setEnclosure で行います。なお、最後の書き込み内容の末尾に、区切り文字は付加されません。従って、連続的に呼び出して書き込みを行う場合、必要に応じてdelimit 関数で区切り文字を挟む必要があります。
void writeln(TextFile &textFile, ... string value[ ])
  テキストファイルに文字列を書き込み、改行します。複数の内容を指定した場合、区切り文字が設定されていれば、間に区切り文字を挟んで書き出します。また、必要に応じて値を引用符で囲んで書き出します。引用符でどのように囲むかの設定は、setEnclosure で行います。
void delimit(TextFile &textFile)
  テキストファイルに区切り文字を書き込みます。
void commentln(TextFile &textFile, string comment)
  テキストファイルにコメント行を書き込みます。この関数をコールするよりも前に、setCommentLineCode 関数で、コメント行の行頭文字列を設定する必要があります。
string[ ] readln(TextFile &textFile)
  テキストファイルから、一行分の内容を読み込みます。区切り文字（デリミタ）が設定されている場合、内容を区切り文字で区切り、配列として返します。ただし引用符（エンクロージャ）が設定されている場合、引用符で囲まれた内部にある区切り文字や改行は、値に含まれると解釈されます(ENCLOSED_NONEオプション時は除く)。引用符をどのように解釈するかの設定は、setEnclosure で行います。
string[ ] read(TextFile &textFile)
  テキストファイルから、全ての内容を読み込みます。区切り文字（デリミタ）が設定されている場合、内容を区切り文字または改行で区切り、配列として返します。ただし引用符（エンクロージャ）が設定されている場合、引用符で囲まれた内部にある区切り文字や改行は、値に含まれると解釈されます(ENCLOSED_NONEオプション時は除く)。引用符をどのように解釈するかの設定は、setEnclosure で行います。
string loadln(TextFile &textFile)
  ファイルから一行を読み込み、そのまま返します。ただし、引用符記号が設定されていて、引用符記号で囲まれた内部に改行がある場合、それは行末とは見なされません。ファイル内に複数の改行コードが混在している場合は、getEndOfLineCode 関数が返すものと同じ改行コードに統一されます。また、コメント行の行頭文字が設定されている場合、コメント行は読み飛ばされます。
string load(TextFile &textFile)
  ファイルから全行を読み込み、そのまま返します。ただし、コメント行の行頭文字が設定されている場合、コメント行は読み飛ばされます。なお、ファイル内に複数の改行コードが混在している場合は統一されます。ファイル内に複数の改行コードが混在している場合は、getEndOfLineCode 関数が返すものと同じ改行コードに統一されます。
int countln(TextFile &textFile)
  テキストファイルの有効行数をカウントします。引用符記号が設定されていない場合、有効行数はファイルの行数に一致します。引用符記号が設定されている場合は、引用符記号で囲まれた内部にある改行はカウントされません。つまり、CSV/TSV形式ファイルにおいては、値に含まれる改行はカウントされません。readln関数でCSV/TSV形式ファイルを読み込む場合、まずこの関数で有効行数を取得して下さい。この関数が返す有効行数を超えてreadln関数をコールする事はできません。

## 構造体 - Structs

文法的定義 - Signature | struct TextFile
構造体名 - Name | TextFile
役割 - Role | テキストファイル構造体です。ファイルIDなどのシステムリソースや、区切り文字情報などを保持します。

## 変数 - Variables

文法的定義 - Signature | const string READ
変数名 - Name | READ
役割 - Role | 汎用テキストファイルの「読み込み」モードです。区切り文字（デリミタ）及び引用符記号（エンクロージャ）は設定されません。引用符の挙動は ENCLOSED_NONE が適用されます。

文法的定義 - Signature | const string WRITE
変数名 - Name | WRITE
役割 - Role | 汎用テキストファイルの「書き込み」モードです。区切り文字（デリミタ）及び引用符記号（エンクロージャ）は設定されません。引用符の挙動は ENCLOSED_NONE が適用されます。

文法的定義 - Signature | const string APPEND
変数名 - Name | APPEND
役割 - Role | 汎用テキストファイルの「追記」モードです。区切り文字（デリミタ）及び引用符記号（エンクロージャ）は設定されません。引用符の挙動は ENCLOSED_NONE が適用されます。

文法的定義 - Signature | const string READ_TSV
変数名 - Name | READ_TSV
役割 - Role | TSV形式ファイルの「読み込み」モードです。区切り文字（デリミタ）はタブ記号、引用符記号（エンクロージャ）はダブルクォーテーションに設定されます。引用符の挙動は ENCLOSED_IF_NECESSARY が適用されます。

文法的定義 - Signature | const string WRITE_TSV
変数名 - Name | WRITE_TSV
役割 - Role | TSV形式ファイルの「書き込み」モードです。区切り文字（デリミタ）はタブ記号、引用符記号（エンクロージャ）はダブルクォーテーションに設定されます。引用符の挙動は ENCLOSED_IF_NECESSARY が適用されます。

文法的定義 - Signature | const string APPEND_TSV
変数名 - Name | APPEND_TSV
役割 - Role | TSV形式ファイルの「追記」モードです。区切り文字（デリミタ）はタブ記号、引用符記号（エンクロージャ）はダブルクォーテーションに設定されます。引用符の挙動は ENCLOSED_IF_NECESSARY が適用されます。

文法的定義 - Signature | const string READ_CSV
変数名 - Name | READ_CSV
役割 - Role | CSV形式ファイルの「読み込み」モードです。区切り文字（デリミタ）はカンマ記号、引用符記号（エンクロージャ）はダブルクォーテーションに設定されます。引用符の挙動は ENCLOSED_IF_NECESSARY が適用されます。

文法的定義 - Signature | const string WRITE_CSV
変数名 - Name | WRITE_CSV
役割 - Role | CSV形式ファイルの「書き込み」モードです。区切り文字（デリミタ）はカンマ記号、引用符記号（エンクロージャ）はダブルクォーテーションに設定されます。引用符の挙動は ENCLOSED_IF_NECESSARY が適用されます。

文法的定義 - Signature | const string APPEND_CSV
変数名 - Name | APPEND_CSV
役割 - Role | CSV形式ファイルの「追記」モードです。区切り文字（デリミタ）はカンマ記号、引用符記号（エンクロージャ）はダブルクォーテーションに設定されます。引用符の挙動は ENCLOSED_IF_NECESSARY が適用されます。

文法的定義 - Signature | const int ENCLOSED_ALL
変数名 - Name | ENCLOSED_ALL
役割 - Role | 全ての値を引用符記号（エンクロージャ）で囲むオプションです。

文法的定義 - Signature | const int ENCLOSED_IF_NECESSARY
変数名 - Name | ENCLOSED_IF_NECESSARY
役割 - Role | 必要な値のみ引用符記号（エンクロージャ）で囲むオプションです。CSV/TSV形式ファイルのデフォルト設定値です。

文法的定義 - Signature | const int ENCLOSED_NONE
変数名 - Name | ENCLOSED_NONE
役割 - Role | どの値も引用符記号（エンクロージャ）で囲まないオプションです。汎用テキストファイルのデフォルト設定値です。

## 関数 - Functions

文法的定義 - Signature | TextFile openTextFile(string filePath, string mode)
関数名 - Name | openTextFile
役割 - Role | ファイル名とモードを指定して、テキストファイルを開きます。モードは下記の定数から選択します。 WRITE 特に何も設定されていない、汎用テキストファイル用の書き込みモードです。設定を独自に行う事もできます。 APPEND 特に何も設定されていない、汎用テキストファイル用の追記モードです。設定を独自に行う事もできます。 READ 特に何も設定されていない、汎用テキストファイル用の読み込みモードです。設定を独自に行う事もできます。 WRITE_CSV CSV（カンマ区切り）ファイル用に設定された書き込みモードです。 APPEND_CSV CSV（カンマ区切り）ファイル用に設定された追記モードです。 READ_CSV CSV（カンマ区切り）ファイル用に設定された読み込みモードです。 WRITE_TSV TSV（タブ区切り）ファイル用に設定された書き込みモードです。 APPEND_TSV TSV（タブ区切り）ファイル用に設定された追記モードです。 READ_TSV TSV（タブ区切り）ファイル用に設定された読み込みモードです。
引数 - Arguments | (string型) filePath : ファイル名 (string型) mode : モード
戻り値 - Return | (TextFile型) 開いたファイルのテキストファイル構造体

文法的定義 - Signature | TextFile openTextFile(string filePath, string mode, string textEncoding)
関数名 - Name | openTextFile
役割 - Role | ファイル名、モード、文字コードを指定して、テキストファイルを開きます。モードは下記の定数から選択します。 WRITE 特に何も設定されていない、汎用テキストファイル用の書き込みモードです。設定を独自に行う事もできます。 APPEND 特に何も設定されていない、汎用テキストファイル用の追記モードです。設定を独自に行う事もできます。 READ 特に何も設定されていない、汎用テキストファイル用の読み込みモードです。設定を独自に行う事もできます。 WRITE_CSV CSV（カンマ区切り）ファイル用に設定された書き込みモードです。 APPEND_CSV CSV（カンマ区切り）ファイル用に設定された追記モードです。 READ_CSV CSV（カンマ区切り）ファイル用に設定された読み込みモードです。 WRITE_TSV TSV（タブ区切り）ファイル用に設定された書き込みモードです。 APPEND_TSV TSV（タブ区切り）ファイル用に設定された追記モードです。 READ_TSV TSV（タブ区切り）ファイル用に設定された読み込みモードです。 また、文字コードは下記の文字列リテラルから選択ます。 "Shift_JIS" Shift_JIS です。ハイフン（ - ）では無くアンダーバー（ _ ）である事に注意して下さい。 "UTF-8" UTF-8 です。アンダーバー（ _ ）では無くハイフン（ - ）である事に注意して下さい。 "EUC-JP" EUC-JP です。アンダーバー（ _ ）では無くハイフン（ - ）である事に注意して下さい。
引数 - Arguments | (string型) filePath : ファイル名 (string型) mode : モード encoding : 文字コード
戻り値 - Return | (TextFile型) 開いたファイルのテキストファイル構造体

文法的定義 - Signature | void close(TextFile &textFile)
関数名 - Name | close
役割 - Role | テキストファイルへのアクセスを閉じます。特に書き込みアクセス後には、バッファされている内容を最後まで書き込み切るためにも、必ず呼び出す必要があります。
引数 - Arguments | (TextFile型) textFile : 対象のテキストファイル構造体
戻り値 - Return | (void型)

文法的定義 - Signature | string getEndOfLineCode(TextFile &textFile)
関数名 - Name | getEndOfLineCode
役割 - Role | ファイル入出力に使用する改行コードを取得します。読み込みモードでは、ファイルに使用されている改行コードを解析し、CR+LF, CR, LF の3つから適切と思われるものを返します。複数の改行コードが混在している場合は、優先度の高いほうから CR+LF, CR, LF の順番で判定します。それらのどれにも該当しない場合は NULL を返します。なお、setEndOfLineCode 関数で改行コードを明示指定した後は、その指定値が返されます。
引数 - Arguments | (TextFile型) textFile : 対象のテキストファイル構造体
戻り値 - Return | (string型) 改行コード

文法的定義 - Signature | void setEndOfLineCode(TextFile &textFile, string endOfLineCode)
関数名 - Name | setEndOfLineCode
役割 - Role | ファイル入出力に使用する改行コードを指定します。改行コードの指定には、System ライブラリに定義されている、以下の定数を使用する事が推奨されます。 LF 文字コードで 0x0A, 一般的なエスケープシーケンスで \n に対応する改行コードです。 CR 文字コードで 0x0D, 一般的なエスケープシーケンスで \r に対応する改行コードです。 CR+LF 文字コードで 0x0D 0x0A, 一般的なエスケープシーケンスで \r\n に対応する改行コードです。（これは1つの定数では無く、CRとLFを加算した式です。） EOL 実行環境におけるデフォルトの文字コードを表します。通常は CR, LF, CR+LF のいずれかが使用されます。
引数 - Arguments | (TextFile型) textFile : 対象のテキストファイル構造体 (string型) endOfLineCode : 改行コード
戻り値 - Return | (void型)

文法的定義 - Signature | void setCommentLineCode(TextFile &textFile, string commentLineCode)
関数名 - Name | setCommentLineCode
役割 - Role | コメント行を表す行頭文字列を指定します。ここで指定した文字列で始まる行は、読み込み時に無視されます。また、commentln 関数でコメント行を出力する際に、ここで指定した文字列が使用されます。なお、読み込みモードの場合、この関数をコールした時点で、どこまでファイルを読み込んだかの情報は初期化されます。 この項目は、デフォルトでは何も設定されていないため、コメント行を考慮する際は必ず設定する必要があります。一般的によく用いられる行頭文字列は、以下のようなものがあります。 "#" (ナンバー記号) CSV/TSVファイルや、スクリプトなどによく用いられます。 ":" （コロン） 一部の設定ファイルやスクリプトなどで用いられます。 ";" （セミコロン） 一部の設定ファイルやスクリプトなどで用いられます。 "//" （ダブルスラッシュ） 一部のプログラミング言語で用いられます。
引数 - Arguments | (TextFile型) textFile : 対象のテキストファイル構造体 endOfLineCode : コメント行を表す行頭文字列
戻り値 - Return | (void型)

文法的定義 - Signature | string getCommentLineCode(TextFile &textFile)
関数名 - Name | getCommentLineCode
役割 - Role | コメント行を表す行頭文字列を返します。
引数 - Arguments | (TextFile型) textFile : 対象のテキストファイル構造体
戻り値 - Return | (string型) コメント行を表す行頭文字列

文法的定義 - Signature | bool isReadable(TextFile &textFile)
関数名 - Name | isReadable
役割 - Role | ファイルが読み込み可能な状態であるか確認します。
引数 - Arguments | (TextFile型) textFile : 対象のテキストファイル構造体
戻り値 - Return | (bool型) 読み込み可能なモードであればtrue

文法的定義 - Signature | bool isWritable(TextFile &textFile)
関数名 - Name | isWritable
役割 - Role | ファイルが読み込み可能な状態であるか確認します。
引数 - Arguments | (TextFile型) textFile : 対象のテキストファイル構造体
戻り値 - Return | (bool型) 読み込み可能なモードであればtrue

文法的定義 - Signature | void setDelimiter(TextFile &textFile, string delimiter)
関数名 - Name | setDelimiter
役割 - Role | 値の区切り文字（デリミタ）を設定します。区切り文字を設定すると、 read 関数やreadln 関数が、値を区切って配列として返すようになります。一般的によく用いられる区切り文字は、以下のようなものがあります。また、write 関数やwritelnが、書き込み時に値を区切り文字で区切るようになります。 "," (カンマ記号) CSVファイルに用いられます。 " " (タブ記号) TSVファイルに用いられます。 " " (半角スペース記号) SSVファイルに用いられます。 ";" (セミコロン記号) 一部の設定ファイルに用いられます。 なお、読み込みモードの場合、この関数をコールした時点で、どこまでファイルを読み込んだかの情報は初期化されます。
引数 - Arguments | (TextFile型) textFile : 対象のテキストファイル構造体 (string型) delimiter : 値の区切り文字（デリミタ）
戻り値 - Return | (void型)

文法的定義 - Signature | void setEnclosure(TextFile &textFile, string enclosure, string enclosureEscapeCharacter, int enclosingOption)
関数名 - Name | setEnclosure
役割 - Role | 値を囲む引用符記号（エンクロージャ）を設定します。引用符記号を設定すると、write 関数やwritelnが、書き込み時に値を引用符記号で囲むようになります。また、read 関数やreadln 関数が、読み込み時に引用符記号を解釈するようになります。 引用符記号は、enclosure に指定します。引数一般によく用いられる引用符記号は、以下のようなものがあります。 "\"" （ダブルクォーテーション） 「 " 」記号です。CSV/TSV形式ファイルでよく用いられます。 VCSSLでは、ダブルクォーテーションは特別な意味を持つため、 このように "\"" というようなリテラルで指定します。 "'" （シングルクォーテーション） 一部のファイルで使用されます。 なお、値が必ず引用符記号で囲まれるべきか、必要な場合のみ囲まれるべきかは、引数のオプション enclosingOption で指定します。このオプションの指定値は以下の定数から選択します。 ENCLOSED_ALL 値が必ず引用符で囲まれる形式です。 ENCLOSED_IF_NECESSARY 必要な場合のみ、値が引用符記号で囲まれる形式です。必要な場合とは、書き込み/読み込み内容が、 「 区切り文字（デリミタ）、引用符記号、コメント行頭記号、改行 」のいずれかを含む場合です。 ENCLOSED_NONE いかなる場合においても、値が引用符で囲まれない形式です。 もしも、引用符記号で囲む値が、さらに引用符記号を含んでいる場合、それは別の記号でエスケープされる必要があります。これは引数 enclosureEscapeCharacter で指定します。一般的によく用いられるエスケープ記号は、以下のようなものがあります。 "\"" （ダブルクォーテーション） 「 " 」記号です。CSV/TSV形式ファイルで、 引用符記号がダブルクォーテーションの場合、よく用いられます。 エスケープ結果は連続したダブルクォーテーションとなります。 VCSSLでは、ダブルクォーテーションは特別な意味を持つため、 このように "\"" というようなリテラルで指定します。 "\\" （バックスラッシュ） 「 \ 」記号です。プログラミング言語などでよく使用されます。 VCSSLでは、バックスラッシュは特別な意味を持つため、 このように "\\" というようなリテラルで指定します。 なお、読み込みモードの場合、この関数をコールした時点で、どこまでファイルを読み込んだかの情報は初期化されます。
引数 - Arguments | (string型) enclosure : 値を囲む引用符文字（エンクロージャ） (string型) enclosureEscapeCharacter : 値に引用符文字（エンクロージャ）が含まれる場合にエスケープする文字 (int型) enclosingOption : 囲み方のオプション
戻り値 - Return | (void型)

文法的定義 - Signature | void write(TextFile &textFile, ... string value[ ])
関数名 - Name | write
役割 - Role | テキストファイルに文字列を書き込みます。複数の内容を指定した場合、区切り文字（デリミタ）が設定されていれば、間に区切り文字を挟んで書き出します。また、必要に応じて値を引用符で囲んで書き出します。引用符でどのように囲むかの設定は、setEnclosure で行います。 なお、最後の書き込み内容の末尾に、区切り文字は付加されません。従って、連続的に呼び出して書き込みを行う場合、必要に応じてdelimit 関数で区切り文字を挟む必要があります。
引数 - Arguments | (TextFile型) textFile : 対象のテキストファイル構造体 (...string[]型) value : 書き込む文字列（可変長引数のため複数指定可能）
戻り値 - Return | (void型)

文法的定義 - Signature | void writeln(TextFile &textFile, ... string value[ ])
関数名 - Name | writeln
役割 - Role | テキストファイルに文字列を書き込み、改行します。複数の内容を指定した場合、区切り文字が設定されていれば、間に区切り文字を挟んで書き出します。また、必要に応じて値を引用符で囲んで書き出します。引用符でどのように囲むかの設定は、setEnclosure で行います。
引数 - Arguments | (TextFile型) textFile : 対象のテキストファイル構造体 (...string[]型) value : 書き込む文字列（可変長引数のため複数指定可能）
戻り値 - Return | (void型)

文法的定義 - Signature | void delimit(TextFile &textFile)
関数名 - Name | delimit
役割 - Role | テキストファイルに区切り文字を書き込みます。
引数 - Arguments | (TextFile型) textFile : 対象のテキストファイル構造体
戻り値 - Return | (void型)

文法的定義 - Signature | void commentln(TextFile &textFile, string comment)
関数名 - Name | commentln
役割 - Role | テキストファイルにコメント行を書き込みます。この関数をコールするよりも前に、setCommentLineCode 関数で、コメント行の行頭文字列を設定する必要があります。
引数 - Arguments | (TextFile型) textFile : 対象のテキストファイル構造体 (string型) comment : コメント
戻り値 - Return | (void型)

文法的定義 - Signature | string[ ] readln(TextFile &textFile)
関数名 - Name | readln
役割 - Role | テキストファイルから、一行分の内容を読み込みます。区切り文字（デリミタ）が設定されている場合、内容を区切り文字で区切り、配列として返します。ただし引用符（エンクロージャ）が設定されている場合、引用符で囲まれた内部にある区切り文字や改行は、値に含まれると解釈されます(ENCLOSED_NONEオプション時は除く)。引用符をどのように解釈するかの設定は、setEnclosure で行います。
引数 - Arguments | (TextFile型) textFile : 対象のテキストファイル構造体
戻り値 - Return | (string[]型) 読み込んだ内容

文法的定義 - Signature | string[ ] read(TextFile &textFile)
関数名 - Name | read
役割 - Role | テキストファイルから、全ての内容を読み込みます。区切り文字（デリミタ）が設定されている場合、内容を区切り文字または改行で区切り、配列として返します。ただし引用符（エンクロージャ）が設定されている場合、引用符で囲まれた内部にある区切り文字や改行は、値に含まれると解釈されます(ENCLOSED_NONEオプション時は除く)。引用符をどのように解釈するかの設定は、setEnclosure で行います。
引数 - Arguments | (TextFile型) textFile : 対象のテキストファイル構造体
戻り値 - Return | (string[]型) 読み込んだ内容

文法的定義 - Signature | string loadln(TextFile &textFile)
関数名 - Name | loadln
役割 - Role | ファイルから一行を読み込み、そのまま返します。ただし、引用符記号が設定されていて、引用符記号で囲まれた内部に改行がある場合、それは行末とは見なされません。ファイル内に複数の改行コードが混在している場合は、getEndOfLineCode 関数が返すものと同じ改行コードに統一されます。また、コメント行の行頭文字が設定されている場合、コメント行は読み飛ばされます。
引数 - Arguments | (TextFile型) textFile : 対象のテキストファイル構造体
戻り値 - Return | (string型) 読み込んだ行の内容

文法的定義 - Signature | string load(TextFile &textFile)
関数名 - Name | load
役割 - Role | ファイルから全行を読み込み、そのまま返します。ただし、コメント行の行頭文字が設定されている場合、コメント行は読み飛ばされます。なお、ファイル内に複数の改行コードが混在している場合は統一されます。ファイル内に複数の改行コードが混在している場合は、getEndOfLineCode 関数が返すものと同じ改行コードに統一されます。
引数 - Arguments | (TextFile型) textFile : 対象のテキストファイル構造体
戻り値 - Return | (string型) 読み込んだ行の内容

文法的定義 - Signature | int countln(TextFile &textFile)
関数名 - Name | countln
役割 - Role | テキストファイルの有効行数をカウントします。引用符記号が設定されていない場合、有効行数はファイルの行数に一致します。引用符記号が設定されている場合は、引用符記号で囲まれた内部にある改行はカウントされません。つまり、CSV/TSV形式ファイルにおいては、値に含まれる改行はカウントされません。readln関数でCSV/TSV形式ファイルを読み込む場合、まずこの関数で有効行数を取得して下さい。この関数が返す有効行数を超えてreadln関数をコールする事はできません。
引数 - Arguments | (TextFile型) textFile : 対象のテキストファイル構造体
戻り値 - Return | (int型) テキストファイルの有効行数