您的位置:首页 > 编程语言 > C语言/C++

VC++中实现INI文件读写的方法和示例

2017-06-13 16:58 686 查看
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码格式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: