MFC中此函数GetPrivteProfileString可以用来读取配置文件.ini的函数,它在VS2008的msdn中的定义是这样的:
GetPrivateProfileString Function
Retrieves a string from the specified section in an initialization file.
翻译过来就是返回初始化文件中特定区域的字符串。参数如下:
DWORD WINAPI GetPrivateProfileString(
__in LPCTSTR lpAppName,
__in LPCTSTR lpKeyName,
__in LPCTSTR lpDefault,
__out LPTSTR lpReturnedString,
__in DWORD nSize,
__in LPCTSTR lpFileName
);
第一个LPCTSTR类型的lpAppName是定值区间,第二个是要读的字符串的名,第三个默认值为NULL,第四个为返回值,返回读到的字符串,第五个设置第四个参数(字符串)的大小,第六个为初始化文件路径。
这里假设初始化文件如下:
[function]
func1 = init
func2 = paint
func3 = read
func4 = write
func5 = exit
[parameter]
para1 = void
para2 = GDI
para3 = file
para4 = string
para5 = handle
我们要读取func2的值,那么读取方法就是
CString strVal;
DWORD size = 1000;
GetPraviteProfileString(_T("function"),_T("func2"),_T("Not Found"),strVal,GetBuffer(size),size,path);
_T("Not Found")为默认字符,即没找到时返回的值,path为文件路径。
然而当我们在移植程序到嵌入式系统时,这样的MFC函数是要不得的,我所使用的方法就是重写这个函数,用C语言写说到底就是字符串匹配的过程了,涉及到文件的就变成了FILE或fstream了,这里选用FILE,看代码吧
下面是两个写入数据结构的函数,我的程序不能随机的读某个节点,只能一次性将节点全部读入数据结构
里存储,有更好的方法还望指教!!
从函数中可以看到,in_buf是一行一行的读取到数据的,所以对应的配置文件格式也要有所变化
[function]
func1
init
func2
paint
func3
read
func4
write
func5
exit
[parameter]
para1
void
para2
GDI
para3
file
para4
string
para5
handle