![]() |
mFrame
|
行資料讀取器,提供從緩衝區解析字串、數值、布林等多種型態的資料。 更多...
#include <LineReader.h>
公開方法(Public Methods) | |
LineReader (ufm::lang::Memory buffer) noexcept | |
使用現有緩衝區構造 LineReader 物件 | |
LineReader (int bufferSize=128) noexcept | |
使用指定緩衝區大小構造 LineReader 物件 | |
LineReader (LineReader &&other) noexcept | |
移動建構子 | |
virtual | ~LineReader (void) override |
解構子,釋放資源 | |
virtual void | forEach (ufm::func::Consumer< const char & > &action) override |
遍歷集合中所有元素,對每個元素執行指定操作。 若所有元素處理完畢或操作中發生異常則停止。 | |
virtual const char * | elementAt (int index) const override |
獲取集合中指定索引處的元素。 | |
virtual int | nextIndex (int index) const override |
返回當前索引的下一個有效索引。 | |
virtual ufm::util::Iterator< const char > | begin (void) override |
取得目前插入位置。 | |
virtual ufm::util::Iterator< const char > | end (void) override |
取得 Scanner 結尾迭代器。 | |
int | nextTokenLength (int limit=0) |
取得下一個 token 的長度。 | |
bool | hasNextToken (int limit=0) |
判斷緩衝區是否有下一個 token。 | |
bool | hasNext (void) const |
判斷緩衝區是否有下一個字元。 | |
bool | hasNextChar (char ch) |
判斷緩衝區是否有指定字元。 | |
bool | hasNextBoolean (void) |
判斷緩衝區是否有可解析的布林值(true/false)。 | |
bool | hasNextInteger (int limit=0) |
判斷緩衝區是否有可解析的整數。 | |
bool | hasNextFloat (int limit=0) |
判斷緩衝區是否有可解析的浮點數。 | |
int | hasNextLine (int limit=0) |
判斷緩衝區是否有完整的一行(遇到換行符)。 | |
bool | nextBoolean (bool &result) |
讀取下一個布林值(true/false),並移除。 | |
int | nextLine (ufm::lang::Appendable &appendable, int limit=0) |
讀取下一行字串,並寫入指定 appendable。 | |
int | nextLine (void *pointer, int length) |
讀取下一行字串,寫入指定記憶體區。 | |
bool | nextInteger (int &result, int limit=0) |
讀取下一個整數,並移除。 | |
bool | nextFloat (float &result, int limit=0) |
讀取下一個浮點數,並移除。 | |
bool | nextChar (char &result) |
讀取下一個字元,並移除。 | |
int | next (ufm::lang::Appendable &appendable, int limit=0) |
讀取下一個字串,並寫入指定 appendable。 | |
int | skip (char pattern, int limit=0) |
跳過直到遇到指定字元或達到限制。 | |
int | skipAll (void) |
跳過指定長度的字元。 | |
int | skipNextToken (int limit=0) |
跳過當前字串直到分隔符。 | |
int | skipNextLine (int limit=0) |
跳過當前行直到下一行(遇到換行符)。 | |
int | avariable (void) const |
取得緩衝區可讀取的位元組數。 | |
![]() | |
void * | operator new (size_t n) |
使用運算子 new 分配記憶體 | |
void * | operator new (size_t n, void *p) |
在指定記憶體上調用運算子 new | |
virtual ufm::lang::Object & | getObject (void) override |
取得對應的 Object 物件 | |
void | delay (int milliseconds) const |
延遲指定的毫秒數進行執行緒等待 | |
bool | equals (Object *object) const |
判斷與另一物件是否為相同參照(指標型態比較) | |
bool | equals (Object &object) const |
判斷與另一物件是否為相同參照(參照型態比較) | |
void | wait (void) const |
使當前線程等待直到被通知 | |
bool | wait (int timeout) const |
等待通知或超時 | |
bool | yield (void) const |
讓執行緒讓渡控制權給同優先權的下一個執行緒 | |
int | lock (void) const |
核心鎖定,鎖定期間禁止線程切換 | |
int | unlock (void) const |
核心解鎖 | |
ufm::sys::Thread * | currentThread (void) const |
取得當前執行緒指標 | |
virtual int | hashcode (void) const |
返回對象的哈希碼值。支持這種方法是為了散列表,如HashMap提供的那樣。 | |
![]() | |
virtual | ~Interface (void)=default |
虛擬析構函式 | |
![]() | |
NonCopyable (void)=default | |
建構一個新的 NonCopyable 物件 | |
NonCopyable (const NonCopyable &other)=delete | |
禁止複製建構子 | |
NonCopyable & | operator= (const NonCopyable &other)=delete |
禁止複製賦值運算子 | |
保護屬性 | |
ufm::lang::Memory | vBuffer |
int | vHead |
當前讀取位置索引 | |
int | vTail |
緩衝區尾部索引 | |
行資料讀取器,提供從緩衝區解析字串、數值、布林等多種型態的資料。
LineReader 主要設計用於逐行解析資料流,支援多種型態的資料判斷與讀取, 包含字串、整數、浮點數、布林值等。可自訂緩衝區大小或使用外部緩衝區, 並提供多種跳躍與查找方法,方便處理各種格式的資料。
典型用途:
主要功能:
|
noexcept |
使用現有緩衝區構造 LineReader 物件
buffer | 指定要讀取的緩衝區 |
|
inlinenoexcept |
使用指定緩衝區大小構造 LineReader 物件
bufferSize | 緩衝區大小,預設 128 bytes |
|
inlinenoexcept |
移動建構子
other | 來源 LineReader 物件 |
|
inline |
取得緩衝區可讀取的位元組數。
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
遍歷集合中所有元素,對每個元素執行指定操作。 若所有元素處理完畢或操作中發生異常則停止。
當操作導致底層資料源發生變動時(未同步處理),其行為未定義。
action | 對每個元素執行的操作 |
bool ufm::util::LineReader::hasNext | ( | void | ) | const |
判斷緩衝區是否有下一個字元。
此函式會檢查緩衝區是否有可讀的字元。
bool ufm::util::LineReader::hasNextBoolean | ( | void | ) |
判斷緩衝區是否有可解析的布林值(true/false)。
bool ufm::util::LineReader::hasNextChar | ( | char | ch | ) |
判斷緩衝區是否有指定字元。
ch | 指定要查找的字元 |
bool ufm::util::LineReader::hasNextFloat | ( | int | limit = 0 | ) |
判斷緩衝區是否有可解析的浮點數。
limit | 查找最大長度上限,<=0 自動, >0 指定長度 |
bool ufm::util::LineReader::hasNextInteger | ( | int | limit = 0 | ) |
判斷緩衝區是否有可解析的整數。
limit | 搜尋最大長度上限,<=0 自動, >0 指定長度 |
int ufm::util::LineReader::hasNextLine | ( | int | limit = 0 | ) |
判斷緩衝區是否有完整的一行(遇到換行符)。
limit | 查找最大長度上限,<=0 自動, >0 指定長度 |
|
inline |
判斷緩衝區是否有下一個 token。
此函式會搜尋下一個分割符號,最多搜尋 limit 個字元。 若未找到分割符號則回傳 false,否則回傳 true。
limit | 最多搜尋的字元數,0 表示不限制。 |
int ufm::util::LineReader::next | ( | ufm::lang::Appendable & | appendable, |
int | limit = 0 ) |
讀取下一個字串,並寫入指定 appendable。
appendable | 寫入目標 |
limit | 查找最大長度上限,<=0 自動, >0 指定長度 |
bool ufm::util::LineReader::nextBoolean | ( | bool & | result | ) |
讀取下一個布林值(true/false),並移除。
result | 讀取結果 |
bool ufm::util::LineReader::nextChar | ( | char & | result | ) |
讀取下一個字元,並移除。
result | 讀取結果 |
bool ufm::util::LineReader::nextFloat | ( | float & | result, |
int | limit = 0 ) |
讀取下一個浮點數,並移除。
result | 讀取結果 |
limit | 查找最大長度上限,<=0 自動, >0 指定長度 |
|
overridevirtual |
返回當前索引的下一個有效索引。
index | 當前索引 |
如果當前索引已經是最後一個元素,則返回 -1。 如果當前索引無效(如 -1),則返回 0
bool ufm::util::LineReader::nextInteger | ( | int & | result, |
int | limit = 0 ) |
讀取下一個整數,並移除。
result | 讀取結果 |
limit | 查找最大長度上限,<=0 自動, >0 指定長度 |
int ufm::util::LineReader::nextLine | ( | ufm::lang::Appendable & | appendable, |
int | limit = 0 ) |
讀取下一行字串,並寫入指定 appendable。
appendable | 寫入目標 |
limit | 查找最大長度上限,<=0 自動, >0 指定長度 |
|
inline |
讀取下一行字串,寫入指定記憶體區。
pointer | 目標記憶體指標 |
length | 可寫入長度 |
int ufm::util::LineReader::nextTokenLength | ( | int | limit = 0 | ) |
取得下一個 token 的長度。
此函式會搜尋下一個分割符號,最多搜尋 limit 個字元。 若未找到分割符號則回傳 -1,否則回傳下個 token 的長度。
limit | 最多搜尋的字元數,0 表示不限制。 |
int ufm::util::LineReader::skip | ( | char | pattern, |
int | limit = 0 ) |
跳過直到遇到指定字元或達到限制。
pattern | 指定字元,0x00 表示直接跳過 limit 數量 |
limit | 最大搜尋長度,>0 指定, <=0 不指定 |
|
inline |
跳過指定長度的字元。
length | 跳過的字元數,0 表示跳過所有可讀字元 |
int ufm::util::LineReader::skipNextLine | ( | int | limit = 0 | ) |
跳過當前行直到下一行(遇到換行符)。
limit | 最大搜尋長度,>0 指定, <=0 不指定 |
int ufm::util::LineReader::skipNextToken | ( | int | limit = 0 | ) |
跳過當前字串直到分隔符。
limit | 最大搜尋長度,>0 指定, <=0 不指定 |