====== XTextIO ====== **//Inherited from//** [[class::xbufferio|XBufferIO]], **//Inherited by//** NULL **//Friend class//** NULL **//Description//** XTextIO从XBufferIO继承,是用于完成文本文件IO的工具类。它利用XBufferIO提供的缓冲区机制是开发者可以在内存中操作文件文件内容(解析数据或按给定格式写出),它既可以使用固定格式(数据大小固定),也可以使用自由格式(数据通过间隔符间隔)。使用它可以显著提高文本文件的处理速度和开发效率。 **//Members//** * int [[xtextio#m_itxtmode|m_iTxtMode]] * int [[xtextio#m_ifixintwidth|m_iFixIntWidth]] * int [[xtextio#m_ifixdblwidthm_idblprecision|m_iFixDblWidthm_iDblPrecision]] * char [[xtextio#m_cfreeseparator|m_cFreeSeparator]] **//Public interface//** * [[xtextio#xtextio1|XTextIO]](const char * path = 0,int buf_size = MEG,TextFormat tf = Txt_Fixed) * void [[xtextio#settextformat|setTextFormat]](bool bFree) * void [[xtextio#setfreeseparator|setFreeSeparator]](char c) * void [[xtextio#setfixwidth|setFixWidth]](int intWidth, int dblWidth) * void [[xtextio#setdblprecision|setDblPrecision]](int pn) * void [[xtextio#writetext|writeText]](const char * data) * void [[xtextio#readtext|readText]](char * data) * void [[xtextio#skipwhite|skipWhite]]() * void [[xtextio#skipcomment|skipComment]]( char commentChar = '#') * void [[xtextio#skipnumber|skipNumber]]() * void [[xtextio#skiptospace|skipToSpace]]() * void [[xtextio#nextline|nextLine]]() * void [[xtextio#skipline|skipLine]](int lines = 1) * void [[xtextio#skipcharacter|skipCharacter]](char c, int times = 1) * void [[xtextio#skiptonextkeyword|skipToNextKeyword]]() * bool [[xtextio#movetokeyword|moveToKeyword]](const char * key) * const char * [[xtextio#getcurrentline|getCurrentLine]]() * int [[xtextio#getlinecount|getLineCount]](int * lineWordCnt) * int [[xtextio#readtextint|readTextInt]](int fixW = 0) * int [[xtextio#readhextextint|readHexTextInt]]() * double [[xtextio#readtextdouble|readTextDouble]](int fixW = 0) * const char * [[xtextio#readkeyword|readKeyword]]() * XTextIO & [[xtextio#readquotestring|readQuoteString]](char * str, bool bSingleQuote = false) * void [[xtextio#writetextint|writeTextInt]](int v) * void [[xtextio#writetextdouble|writeTextDouble]](double v, int precision = -1) * void [[xtextio#writekeyword|writeKeyword]](const char * v) * void [[xtextio#writequotestring|writeQuoteString]](const char * str) * bool [[xtextio#isnextkeyword|isNextKeyword]](const char * str, char commentChar = '#') * bool [[xtextio#isnextstring|isNextString]](const char * str, char commentChar = '#') * XTextIO & operator [[xtextio#<<|<<]] (float v) * XTextIO & operator [[xtextio#<<|<<]] (double v) * XTextIO & operator [[xtextio#<<|<<]] (int v) * XTextIO & operator [[xtextio#<<|<<]] (ulong v) * XTextIO & operator [[xtextio#<<|<<]] (const char * str) * XTextIO & operator [[xtextio#<<|<<]] (IOCharacter c) * XTextIO & operator [[xtextio#<<|<<]] (char c) * XTextIO & operator [[xtextio#>>|>>]] (float& v) * XTextIO & operator [[xtextio#>>|>>]] (double& v) * XTextIO & operator [[xtextio#>>|>>]] (int& v) * XTextIO & operator [[xtextio#>>|>>]] (ulong& v) * XTextIO & operator [[xtextio#>>|>>]] (char * str) * XTextIO & operator [[xtextio#>>|>>]] (IOCharacter c) ---- {{anchor:m_itxtmode}} **int m_iTxtMode** 文本文件的格式,自由格式Txt_Free或者固定格式Txt_Fixed {{anchor:m_ifixintwidth}} **int m_iFixIntWidth** 固定格式中整型数的字符串宽度 {{anchor:m_ifixdblwidth}} **int m_iFixDblWidth** 固定格式中浮点数的字符串宽度(读入模式) {{anchor:m_idblprecision}} **int m_iDblPrecision** 固定格式中浮点数的精度(写出模式) {{anchor:m_cfreeseparator}} **char m_cFreeSeparator** 数据间隔符 ---- {{anchor:xtextio1}} **XTextIO(const char * path = 0,int buf_size = MEG,TextFormat tf = Txt_Fixed)** *function: 构造函数 *parameters: - [i]const char * path = 0: 文件路径 - [i]int buf_size = MEG: 缓冲区大小 - [i]TextFormat tf = Txt_Fixed: 文本文件的格式,默认固定格式 *return value: 无 {{anchor:settextformat}} **void setTextFormat(bool bFree)** *function: 设置文本的格式 *parameters: - [i]bool bFree: 是否自由格式 *return value: 无 {{anchor:setfreeseparator}} **void setFreeSeparator(char c)** *function: 设置数据间隔符 *parameters: - [i]char c: 间隔符 *return value: 无 {{anchor:setfixwidth}} **void setFixWidth(int intWidth, int dblWidth)** *function: 设置固定格式下数据的字符串宽度 *parameters: - [i]int intWidth: 整型数的字符串宽度 - [i] int dblWidth: 浮点数的字符串宽度 *return value: 无 {{anchor:setdblprecision}} **void setDblPrecision(int pn)** *function: 设置浮点数的写出精度 *parameters: - [i]int pn: 浮点数的精度(有效数字的个数) *return value: 无 {{anchor:writetext}} **void writeText(const char * data)** *function: 写出字符串内容 *parameters: - [i]const char * data: 字符串内容 *return value: 无 {{anchor:readtext}} **void readText(char * data)** *function: 读入字符串内容到地址data中 *parameters: - [i]char * data: 存放字符串内容的地址 *return value: 无 {{anchor:skipwhite}} **void skipWhite()** *function: 跳过空白字符 *parameters: NULL *return value: 无 {{anchor:skipcomment}} **void skipComment( char commentChar = '#')** *function: 跳过注释 *parameters: - [i] char commentChar = '#': 注释前导符,默认为‘#’ *return value: 无 {{anchor:skipnumber}} **void skipNumber()** *function: 跳过数字 *parameters: NULL *return value: 无 {{anchor:skiptospace}} **void skipToSpace()** *function: 跳到空格处 *parameters: NULL *return value: 无 {{anchor:nextline}} **void nextLine()** *function: 写入换行符 *parameters: NULL *return value: 无 {{anchor:skipline}} **void skipLine(int lines = 1)** *function: 跳过指定行数的文本 *parameters: - [i]int lines = 1: 行数,默认为1 *return value: 无 {{anchor:skipcharacter}} **void skipCharacter(char c, int times = 1)** *function: 跳过指定次数的字符 *parameters: - [i]char c: 字符 - [i] int times = 1: 次数,默认为1 *return value: 无 {{anchor:skiptonextkeyword}} **void skipToNextKeyword()** *function: 跳到下一个关键字 *parameters: NULL *return value: 无 {{anchor:movetokeyword}} **bool moveToKeyword(const char * key)** *function: 移动到关键字 *parameters: - [i]const char * key: 关键字字符串 *return value: 如匹配到关键字返回true,否则返回false {{anchor:getcurrentline}} **const char * getCurrentLine()** *function: 获取当前行的字符串首地址 *parameters: NULL *return value: 当前行的字符串首地址 {{anchor:getlinecount}} **int getLineCount(int * lineWordCnt)** *function: 获取文件的行数 *parameters: - [i]int * lineWordCnt: 每行有多少个词 *return value: 文件的行数 {{anchor:readtextint}} **int readTextInt(int fixW = 0)** *function: 读入整型数 *parameters: - [i]int fixW = 0: 字符串的固定宽度 *return value: 整型数值 {{anchor:readhextextint}} **int readHexTextInt()** *function: 读入16进制整型数 *parameters: NULL *return value: 整型数值 {{anchor:readtextdouble}} **double readTextDouble(int fixW = 0)** *function: 读入浮点数 *parameters: - [i]int fixW = 0: 字符串的固定宽度,默认自由宽度 *return value: 浮点数值 {{anchor:readkeyword}} **const char * readKeyword()** *function: 读取关键字 *parameters: NULL *return value: 关键字字符串 {{anchor:readquotestring}} **XTextIO & readQuoteString(char * str, bool bSingleQuote = false)** *function: 读入引号中的字符串 *parameters: - [i]char * str: 存放字符串的内存空间 - [i] bool bSingleQuote = false: 是否单引号 *return value: XTextIO文件类的引用,以便于继续调用其他函数 {{anchor:writetextint}} **void writeTextInt(int v)** *function: 写出整型数 *parameters: - [i]int v: 整型数 *return value: 无 {{anchor:writetextdouble}} **void writeTextDouble(double v, int precision = -1)** *function: 写出浮点数 *parameters: - [i]double v: 浮点数 - [i] int precision = -1: 写出精度 *return value: 无 {{anchor:writekeyword}} **void writeKeyword(const char * v)** *function: 写出关键字 *parameters: - [i]const char * v: 关键字字符串 *return value: 无 {{anchor:writequotestring}} **void writeQuoteString(const char * str)** *function: 写出字符串,字符串被放入到引号中 *parameters: - [i]const char * str: 字符串 *return value: 无 {{anchor:isnextkeyword}} **bool isNextKeyword(const char * str, char commentChar = '#')** *function: 下一段有效字符串是否匹配关键字str(跳过注释) *parameters: - [i]const char * str: 关键字 - [i] char commentChar = '#': 注释前导符 *return value: 匹配返回true,否则返回false {{anchor:isnextstring}} **bool isNextString(const char * str, char commentChar = '#')** *function: 下一段有效字符串是否匹配字符串str(跳过注释) *parameters: - [i]const char * str: 被匹配的字符串 - [i] char commentChar = '#': 注释前导符 *return value: 匹配返回true,否则返回false {{anchor:<<}} **XTextIO & operator << (float v)** *function: 写出单精度浮点数 *parameters: - [i]float v: 单精度浮点数 *return value: XTextIO文件类的引用,以便于继续写出 {{anchor:<<}} **XTextIO & operator << (double v)** *function: 写出双精度浮点数 *parameters: - [i]double v: 双精度浮点数 *return value: XTextIO文件类的引用,以便于继续写出 {{anchor:<<}} **XTextIO & operator << (int v)** *function: 写出整型数 *parameters: - [i]int v: 整型数 *return value: XTextIO文件类的引用,以便于继续写出 {{anchor:<<}} **XTextIO & operator << (ulong v)** *function: 写出无符号整型数 *parameters: - [i]ulong v: 无符号整型数 *return value: XTextIO文件类的引用,以便于继续写出 {{anchor:<<}} **XTextIO & operator << (const char * str)** *function: 写出字符串 *parameters: - [i]const char * str: 字符串 *return value: XTextIO文件类的引用,以便于继续写出 {{anchor:<<}} **XTextIO & operator << (IOCharacter c)** *function: 写出特殊字符 *parameters: - [i]IOCharacter c: 特殊字符 *return value: XTextIO文件类的引用,以便于继续写出 {{anchor:<<}} **XTextIO & operator << (char c)** *function: 写出单精度浮点数 *parameters: 写出一个字符 - [i]char c: 字符 *return value: XTextIO文件类的引用,以便于继续写出 {{anchor:>>}} **XTextIO & operator >> (float& v)** *function: 读入单精度浮点数 *parameters: - [i]float& v: 单精度浮点数 *return value: XTextIO文件类的引用,以便于继续读入 {{anchor:>>}} **XTextIO & operator >> (double& v)** *function: 读入双精度浮点数 *parameters: - [i]double& v: 双精度浮点数 *return value: XTextIO文件类的引用,以便于继续读入 {{anchor:>>}} **XTextIO & operator >> (int& v)** *function: 读入整型数 *parameters: - [i]int& v: 整型数 *return value: XTextIO文件类的引用,以便于继续读入 {{anchor:>>}} **XTextIO & operator >> (ulong& v)** *function: 读入无符号整型数 *parameters: - [i]ulong& v: 无符号整型数 *return value: XTextIO文件类的引用,以便于继续读入 {{anchor:>>}} **XTextIO & operator >> (char * str)** *function: 读入字符串 *parameters: - [i]char * str: 字符串 *return value: XTextIO文件类的引用,以便于继续读入 {{anchor:>>}} **XTextIO & operator >> (IOCharacter c)** *function: 读入特殊字符 *parameters: - [i]IOCharacter c: 特殊字符 *return value: XTextIO文件类的引用,以便于继续读入