VC++中实现INI文件读写的方法和示例
一:读ini配置文件
DWORD GetPrivateProfileString(
LPCTSTR lpAppName,
LPCTSTR lpKeyName,
LPCTSTR lpDefault,
LPTSTR lpReturnedString,
DWORD nSize,
LPCTSTR lpFileName
);
其中各参数的意义:
前二个参数与 WritePrivateProfileString中的意义一样.
lpDefault : 如果INI文件中没有前两个参数指定的字段名或键名,则将此值赋给变量.
lpReturnedString : 接收INI文件中的值的CString对象,即目的缓存器.
nSize : 目的缓存器的大小.
lpFileName : 是完整的INI文件名.
代码实现演示:
void CIniFileDemoDlg::OnBnClickedButton1()//read { // TODO: Add your control notification handler code here CString strClass, strName, strAge, strSex, strGrade; CString strPath=_T("D:\\test\\demo.ini"); ::GetPrivateProfileString(_T("StudentInfo"), _T("Class"), _T(""), strClass.GetBuffer(MAX_PATH),MAX_PATH, strPath); ::GetPrivateProfileString(_T("StudentInfo"), _T("Name"), _T(""),strName.GetBuffer(MAX_PATH),MAX_PATH,strPath); ::GetPrivateProfileString(_T("StudentInfo"), _T("Age"), _T(""),strAge.GetBuffer(MAX_PATH),MAX_PATH, strPath); ::GetPrivateProfileString(_T("StudentInfo"), _T("Sex"), _T(""),strSex.GetBuffer(MAX_PATH),MAX_PATH, strPath); ::GetPrivateProfileString(_T("StudentInfo"), _T("Grade"), _T(""),strGrade.GetBuffer(MAX_PATH),MAX_PATH,strPath); SetDlgItemText(IDC_EDIT1, strClass); SetDlgItemText(IDC_EDIT2, strName); SetDlgItemText(IDC_EDIT3, strAge); SetDlgItemText(IDC_EDIT4, strSex); SetDlgItemText(IDC_EDIT5, strGrade); }
二:读ini配置文件
BOOL WritePrivateProfileString(
LPCTSTR lpAppName,
LPCTSTR lpKeyName,
LPCTSTR lpString,
LPCTSTR lpFileName
);
其中各参数的意义:
LPCTSTR lpAppName 是INI文件中的一个字段名.
LPCTSTR lpKeyName 是lpAppName下的一个键名,通俗讲就是变量名.
LPCTSTR lpString 是键值,也就是变量的值,不过必须为LPCTSTR型或CString型的.
LPCTSTR lpFileName 是完整的INI文件名.
代码实现演示:
void CIniFileDemoDlg::OnBnClickedButton2()//writer { // TODO: Add your control notification handler code here CString strClass, strName, strAge, strSex, strGrade; CString strPath=_T("D:\\test\\demo.ini"); GetDlgItemText(IDC_EDIT1, strClass); GetDlgItemText(IDC_EDIT2, strName); GetDlgItemText(IDC_EDIT3, strAge); GetDlgItemText(IDC_EDIT4, strSex); GetDlgItemText(IDC_EDIT5, strGrade); ::WritePrivateProfileString(_T("StudentInfo"), _T("Class"), strClass, strPath); ::WritePrivateProfileString(_T("StudentInfo"), _T("Name"), strName, strPath); ::WritePrivateProfileString(_T("StudentInfo"), _T("Age"), strAge, strPath); ::WritePrivateProfileString(_T("StudentInfo"), _T("Sex"), strSex, strPath); ::WritePrivateProfileString(_T("StudentInfo"), _T("Grade"), strGrade,strPath); }
[StudentInfo] Class=2012 Name=jake Age=22 Sex=女 Grade=优秀
1.INI文件的路径必须完整,文件名前面的各级目录必须存在,否则写入不成功,该函数返回 FALSE 值.
2.文件名的路径中必须为 \\ ,因为在VC++中, \\ 才表示一个 \ .
3.也可将INI文件放在程序所在目录,此时 lpFileName 参数为: ".\\demo.ini".
4:如果配置文件中有中文字符,需要修改下配置文件的格式。例如将配置文件重新命名为ASCII码格式。