📄 csdn_文档中心_一个手工读写ini文件的类(一).htm
字号:
lang=EN-US>INI</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">配置文件,但这两个函数每取出一个数据,都要打开文件,在文件中进行搜索,这样处理的效率肯定会很慢,因此下面提供了一个将配置文件读入内存中的做法,这样做的好处是一次读取文件,快速搜索(使用</SPAN><SPAN
lang=EN-US>Map</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">映射)。可以将所有数据全部保存成字符串或者文件。</SPAN></FONT></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><FONT size=3><SPAN
lang=EN-US>INI</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">配置文件主要由四部分组成:组、键值、内容、注释和空行,下面给出一个例子文件进行说明</SPAN></FONT></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><FONT size=3><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件:</SPAN><SPAN
lang=EN-US>E:\boot.ini</SPAN></FONT></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN
lang=EN-US><FONT size=3> <?xml:namespace prefix = o ns =
"urn:schemas-microsoft-com:office:office"
/><o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><SPAN
lang=EN-US>[boot loader]<SPAN
style="mso-tab-count: 2"> </SPAN>;</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这里是一个组,下面的两行配置数据隶属于该组</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><SPAN
lang=EN-US>timeout=1<SPAN style="mso-tab-count: 1">
</SPAN><SPAN style="mso-tab-count: 1">
</SPAN>;</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这里在等号前面的是一个键值,等号后面的是一个内容</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><SPAN
lang=EN-US>default=multi(0)disk(0)rdisk(0)partition(2)\WINNT;</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">下面一行是一个空行</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN
lang=EN-US><FONT size=3> <o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><SPAN
lang=EN-US>[operating systems];</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">所有在</SPAN><SPAN
lang=EN-US>';'</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">后面的字符都属于注释,本程序不支持</SPAN><SPAN
lang=EN-US>REM</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">形式的注释</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN
lang=EN-US><FONT
size=3>multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows
2000 Professional" /fastdetect;sadfkl;</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN
lang=EN-US><FONT size=3>C:\="Microsoft Windows"</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN
lang=EN-US><FONT size=3> <o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><SPAN
lang=EN-US><SPAN
style="mso-tab-count: 1">
</SPAN></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">好了,知道了</SPAN><SPAN
lang=EN-US>INI</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件的结构,开始分析</SPAN><SPAN
lang=EN-US>INI</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件读入内存后应使用的数据结构。</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><SPAN
lang=EN-US><SPAN
style="mso-tab-count: 1">
</SPAN></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一个</SPAN><SPAN
lang=EN-US>INI</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件可以看作是由一些组以及每个组下面的数据组成的,组是字符串形式的,而数据是一个比较复杂的对象。为了搜索的方便,所以这里采用了</SPAN></FONT><SPAN
lang=EN-US
style="COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt">CMapStringToPtr</SPAN><SPAN
style="COLOR: black; FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt">来组织整个</SPAN><SPAN
lang=EN-US
style="COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt">INI</SPAN><SPAN
style="COLOR: black; FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt">文件,这样的话可以由组的字符串方便地查询到该组中的数据</SPAN><SPAN
lang=EN-US
style="COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US
style="COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"><SPAN
style="mso-tab-count: 1">
</SPAN></SPAN><SPAN
style="COLOR: black; FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt">一个组下面的数据是由一些键值—</SPAN><SPAN
lang=EN-US
style="COLOR: black; FONT-FAMILY: Wingdings; FONT-SIZE: 10pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-char-type: symbol; mso-symbol-font-family: Wingdings"><SPAN
style="mso-char-type: symbol; mso-symbol-font-family: Wingdings">à</SPAN></SPAN><SPAN
style="COLOR: black; FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt">内容组成的映射关系,所以使用</SPAN><SPAN
lang=EN-US
style="COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt">CMapStringToString</SPAN><SPAN
style="COLOR: black; FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt">来组这这些数据是最好不过的选择了。</SPAN><SPAN
lang=EN-US
style="COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US
style="COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US
style="COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"><SPAN
style="mso-tab-count: 1">
</SPAN></SPAN><SPAN
style="COLOR: black; FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt">下面给出这个类的头文件和实现部分。给出之前简单介绍该类的用法:</SPAN><SPAN
lang=EN-US
style="COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN
style="COLOR: black; FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt">读取上述</SPAN><SPAN
lang=EN-US
style="COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt">E:\boot.ini</SPAN><SPAN
style="COLOR: black; FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt">文件:</SPAN><SPAN
lang=EN-US
style="COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US
style="COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US
style="COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"> <o:p></o:p></SPAN></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN
lang=EN-US
style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt">#include
</SPAN><SPAN lang=EN-US
style="COLOR: #000077; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt">"cfgdata.h"</SPAN><SPAN
lang=EN-US
style="COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US
style="COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"> <o:p></o:p></SPAN></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN
lang=EN-US
style="COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"><SPAN
style="mso-tab-count: 1">
</SPAN>CCfgData CfgData;<o:p></o:p></SPAN></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN
lang=EN-US
style="COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"> <o:p></o:p></SPAN></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN
lang=EN-US
style="COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"><SPAN
style="mso-tab-count: 1">
</SPAN></SPAN><SPAN lang=EN-US
style="COLOR: #009900; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt">//Load
INI</SPAN><SPAN
style="COLOR: #009900; FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt">文件</SPAN><SPAN
lang=EN-US
style="COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"><o:p></o:p></SPAN></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN
lang=EN-US
style="COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"><SPAN
style="mso-tab-count: 1">
</SPAN>CfgData.LoadCfgData(</SPAN><SPAN lang=EN-US
style="COLOR: #000077; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt">"E:\\boot.ini"</SPAN><SPAN
lang=EN-US
style="COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt">);<o:p></o:p></SPAN></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN
lang=EN-US
style="COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"><SPAN
style="mso-tab-count: 1">
</SPAN>CString str;<o:p></o:p></SPAN></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN
lang=EN-US
style="COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"><SPAN
style="mso-tab-count: 1">
</SPAN></SPAN><SPAN lang=EN-US
style="COLOR: blue; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt">long</SPAN><SPAN
lang=EN-US
style="COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt">
l=0;<o:p></o:p></SPAN></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN
lang=EN-US
style="COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"><SPAN
style="mso-tab-count: 1">
</SPAN></SPAN><SPAN lang=EN-US
style="COLOR: #009900; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt">//</SPAN><SPAN
style="COLOR: #009900; FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt">设置当前组</SPAN><SPAN
lang=EN-US
style="COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"><o:p></o:p></SPAN></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN
lang=EN-US
style="COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"><SPAN
style="mso-tab-count: 1">
</SPAN>CfgData.SetGroup(</SPAN><SPAN lang=EN-US
style="COLOR: #000077; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt">"boot
loader"</SPAN><SPAN lang=EN-US
style="COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt">);<o:p></o:p></SPAN></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN
lang=EN-US
style="COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"><SPAN
style="mso-tab-count: 1">
</SPAN></SPAN><SPAN lang=EN-US
style="COLOR: #009900; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt">//</SPAN><SPAN
style="COLOR: #009900; FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt">读取</SPAN><SPAN
lang=EN-US
style="COLOR: #009900; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt">long</SPAN><SPAN
style="COLOR: #009900; FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt">型数据到变量</SPAN><SPAN
lang=EN-US
style="COLOR: #009900; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt">l</SPAN><SPAN
lang=EN-US
style="COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"><o:p></o:p></SPAN></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN
lang=EN-US
style="COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"><SPAN
style="mso-tab-count: 1">
</SPAN>CfgData.GetLongData(</SPAN><SPAN lang=EN-US
style="COLOR: #000077; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt">"timeout"</SPAN><SPAN
lang=EN-US
style="COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt">,l);<o:p></o:p></SPAN></P>
<P align=left class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none"><SPAN
lang=EN-US
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -