CSVパーサーです。ストリームからCSV文字列を読み込んでパースします。
[詳解]
#include "nn/nlib/msgpack/CsvReader.h"
CSVパーサーです。ストリームからCSV文字列を読み込んでパースします。
- 説明
- 基本的にはRFC4180に準拠しています。
- ただし以下の点が異なります。
-
改行コードは
CRLF
のみでなく、CR
, LF
単体でも改行コードと認識されます。
-
UTF-8文字列を通します。UTF-8の文字列はUTF-8として正しいかどうかチェックされます。
- 読み込んだデータは
MpObject
に変換されます。データは配列の配列という形式となり、列の長さは最長のものに揃えられます。 また、パースの際にフィールドの文字列が型変換される場合があります。
- 具体的には、以下のとおりです。
-
整数と浮動小数点数は数値に変換されます。16進表現等は文字列と解釈されます。
-
true
, false
は真偽値の値に変換されます。
-
空文字列は
nil
に変換されます。
- 参照
- https://www.ietf.org/rfc/rfc4180.txt (RFC4180, CSV)
-
http://www.kasai.fm/wiki/rfc4180jp (RFC4180, CSV, in Japanese)
CsvReader.h の 33 行目に定義があります。
◆ Close()
nn::nlib::msgpack::CsvReader::Close |
( |
| ) |
|
|
noexcept |
CsvReader をクローズします。
- 戻り値
- 成功した場合は
true
- 説明
CsvReader
をクローズして、ベースストリームをデタッチします。 この際、ベースストリームはクローズされません。
Init()
メンバ関数を再び利用することでオブジェクトを再利用することができます。
◆ GetErrorValue()
nn::nlib::msgpack::CsvReader::GetErrorValue |
( |
| ) |
const |
|
inlinenoexcept |
発生したエラーを取得します。
- 戻り値
-
0 | エラーは発生していません。 |
EILSEQ | CSVとしては正しくない文字に遭遇した(パースエラー)。 |
EINVAL | 引数にエラーがあった。 |
EEXIST | 初期化されたCsvReader を再度初期化しようとした。 |
EIO | ベースストリームでエラーが発生した。 |
EBADF | 未初期化のCsvReader を利用しようとした。 |
ENOMEM | メモリの取得に失敗した。 |
CsvReader.h の 50 行目に定義があります。
◆ GetStream()
nn::nlib::msgpack::CsvReader::GetStream |
( |
| ) |
|
|
noexcept |
Init()
で設定したベースストリームを取得します。
- 戻り値
- ストリームへのポインタを返します。
◆ Init()
nn::nlib::msgpack::CsvReader::Init |
( |
| ) |
|
|
noexcept |
◆ Open()
nn::nlib::msgpack::CsvReader::Open |
( |
InputStream * |
stream | ) |
|
|
noexcept |
入力ストリームをセットします。
- 引数
-
- 戻り値
- 成功した場合は0
◆ Read() [1/2]
CSV文字列をパースしてオブジェクトを設定します。
- 引数
-
[in] | obj | 変換されたCSVが格納されるオブジェクト |
[in] | csvtext | CSV文字列 |
- 戻り値
- 成功ならば
true
- 説明
- 内部で
CsvReader
を構築し、メモリストリームからCSV文字列を読み込みパースします。 途中で何らかのエラーがあった場合はfalse
を返します。その場合はobj
は不変です。
◆ Read() [2/2]
nn::nlib::msgpack::CsvReader::Read |
( |
MpObject * |
obj | ) |
|
|
noexcept |
CSV文字列をストリームから読み込んでパースし、obj
に設定します。
- 引数
-
[in] | obj | 読み込んだCSVが設定されるオブジェクト |
- 戻り値
- 成功した場合は
true
- 説明
- CSV文字列は
MpObject
に変換されて、obj
に格納されます。 読み込み中にエラーが発生した場合、エラーを設定してfalse
を返します。
このクラス詳解は次のファイルから抽出されました: