|
errno_t | Init () noexcept |
| テキストリーダーを初期化します。 [詳解]
|
|
errno_t | Open (InputStream *stream) noexcept |
| ストリームを与えてテキストリーダーをオープンします。 [詳解]
|
|
int | Read () noexcept |
| ストリームから1文字を読み込み、UTF-32で返します。 [詳解]
|
|
int | Peek () noexcept |
| ストリームの先頭の1文字を、UTF-32で返します。 [詳解]
|
|
int | SkipWs () noexcept |
| ストリーム内の空白(スペース,改行,タブ,復帰)文字を読み飛ばして、読み飛ばした空白の数を返します。 [詳解]
|
|
bool | ReadUntil (size_t *len, nlib_utf8_t *buf, size_t n, char delim) noexcept |
| delim まで最大n バイトのUTF-8文字列を読み込みbuf に格納します。 [詳解]
|
|
template<size_t N> |
bool | ReadUntil (size_t *len, nlib_utf8_t(&buf)[N], char delim) noexcept |
| ReadUntil(len, buf, N, delim) を呼び出します。
|
|
template<class T > |
bool | ReadUntil (size_t *len, nlib_utf8_t *buf, size_t n, T pred) noexcept |
| 最大n バイトのUTF-8文字列を読み込みbuf に格納します。 [詳解]
|
|
template<class T , size_t N> |
bool | ReadUntil (size_t *len, nlib_utf8_t(&buf)[N], T pred) noexcept |
| ReadUntil(len, buf, N, pred) を呼び出します。
|
|
size_t | ReadDecimalString (char *buf, size_t n) noexcept |
| 0-9 までの文字を最大n 文字まで読み込みbuf に格納します。 [詳解]
|
|
template<size_t N> |
size_t | ReadDecimalString (char(&buf)[N]) noexcept |
| ReadDecimalString(buf, N) を呼び出します。
|
|
bool | Proceed (const nlib_utf8_t *str, size_t n) noexcept |
| 文字列str の分だけストリームを進めます。 [詳解]
|
|
bool | Proceed (char c) noexcept |
| 文字c の分だけストリームを進めます。 [詳解]
|
|
bool | ProceedEx (const nlib_utf8_t *str) noexcept |
| 文字列str の分だけストリームを進めます。文字列の長さ制限はありませんが、一致しない場合もストリームの位置が変更される可能性があります。 [詳解]
|
|
bool | Close () noexcept |
| テキストリーダーをクローズします。 [詳解]
|
|
void | SetError (errno_t e) const noexcept |
| エラー値を設定します。 [詳解]
|
|
errno_t | GetErrorValue () const noexcept |
| 読み込みが失敗した際に、エラーの原因を取得できます。 [詳解]
|
|
InputStream * | GetStream () noexcept |
| テキストリーダーが書き込みを行うストリームを取得します。 [詳解]
|
|
int | GetLine () const noexcept |
| 現在の行番号を取得します。 [詳解]
|
|
int | GetColumn () const noexcept |
| 現在の桁を取得します。 [詳解]
|
|
| operator bool () const |
| 内部でエラーが発生していなければtrue を返します。
|
|
|
| TextReader () noexcept |
| デフォルトコンストラクタです。
|
|
virtual | ~TextReader () noexcept |
| デストラクタです。ストリームはクローズされません。
|
|
ストリームからテキストを読み込むクラスです。
- 説明
- ストリームからUTF-8の文字列を読みだして、UTF-32かUTF-16で1文字ずつ取得することができます。
- 改行文字列については以下のように加工されます。
-
CRLF
はLF
として渡されます。
-
CR
はLF
として渡されます。
-
LF
はLF
として渡されます。
- また、冗長なUTF-8を検出した場合は、エラー(
EILSEQ
)になります。 U+D800-U+DFFF
に対応するUTF-8を検出した場合もエラー(EILSEQ
)になります。 const char str[] = "multibyte \r\nstring";
MemoryInputStream istr;
istr.Init(str);
int c;
while ((c = r.Read()) != -1) {
}
TextReader
を継承し、FillBuffer_()
メンバ関数をオーバーライドすることによって、UTF-8テキストのチェックを追加することができます。 TextReader
クラスではUTF-8が有効かどうかと改行コードの処理を行っています。
- 派生クラスでの実装の概略を以下に示します。
TextReader::FillBuffer_();
}
- 各種例:
- misc/readfile/readfile.cpp, misc/writefile/writefile.cpp.
TextReader.h の 33 行目に定義があります。