Config配置文件读写

配置文件本质上是包含成功操作程序所需信息的文件,这些信息以特定方式构成。它们不是在程序中进行硬编码,而是用户可配置的,通常存储在纯文本文件中。

写配置文件

使用函数WritePrivateProfileStringW写配置文件

BOOL WritePrivateProfileStringW(
  [in] LPCWSTR lpAppName,
  [in] LPCWSTR lpKeyName,
  [in] LPCWSTR lpString,
  [in] LPCWSTR lpFileName
);
  • 参数lpAppName

表示ini文件中的一个字段名(节名),可以有很多节名

  • 参数lpKeyName

表示lpAppName下的一个键名

  • 参数lpString

表示键值,也就是变量的值

  • 参数lpFileName

表示完整的ini文件名

读配置文件

使用GetPrivateProfileStringW读取配置文件

DWORD GetPrivateProfileStringW(
  [in]  LPCWSTR lpAppName,
  [in]  LPCWSTR lpKeyName,
  [in]  LPCWSTR lpDefault,
  [out] LPWSTR  lpReturnedString,
  [in]  DWORD   nSize,
  [in]  LPCWSTR lpFileName
);
  • 参数lpAppName

表示INI文件中的一个字段名(节名)。如果此参数为NULL,则函数会将文件中的所有节名复制到提供的缓冲区。

  • 参数lpKeyName

要检索其关联字符串的键的名称。如果此参数为NULL,lpAppName参数指定的节中的所有键名称都将复制到lpReturnString参数指定的缓冲区中。

  • 参数lpDefault

默认字符串。如果在初始化文件中找不到lpKeyName键,GetPrivateProfileString会将默认字符串复制到lpReturnString缓冲区。如果此参数为NULL,则默认值为空字符串 “”。避免指定带有尾随空白字符的默认字符串。该函数在lpReturnString缓冲区中插入一个字符,以去除任何尾随空格。

  • 参数lpReturnedString

表示指向接收缓冲区的指针。

  • 参数nSize

表示指向的缓冲区的大小(以字符为单位)。

  • 参数lpFileName

初始化文件的名称。如果此参数不包含文件的完整路径,系统将在 Windows 目录中搜索该文件。

Demo示例

写配置文件

通过GetCurrentDirectory获取当前程序所在目录,在当前目录下创建INI文件。

//读写配置文件

void CMyFileCFileView::OnWriteConfig() {
	//获取当前路径
	WCHAR strPath[MAX_PATH] = { 0 };
	GetCurrentDirectoryW(MAX_PATH, strPath);
	CString strFilePath;
	strFilePath.Format(L"%ls//Test.ini", strPath);	//字符串拼接
	WritePrivateProfileStringW(L"metada", L"title", L"搜狗双拼", strFilePath);	//段名、键名、内容
	WritePrivateProfileStringW(L"声母", L"ch", L"I", strFilePath);
	WritePrivateProfileStringW(L"声母", L"sh", L"U", strFilePath);
}

读配置文件

读取配置文件,通过TRACE将读取的值显示出来。

//读配置文件
void CMyFileCFileView::OnReadConfig() {
	WCHAR strPath[MAX_PATH] = { 0 };
	WCHAR strTitle[MAX_PATH] = { 0 };
	WCHAR strCh[MAX_PATH] = { 0 };
	WCHAR strSh[MAX_PATH] = { 0 };
	//获取当前路径
	GetCurrentDirectoryW(MAX_PATH, strPath);
	TRACE("## strPath = %ls", strPath);

	CString strFilePath;
	strFilePath.Format(L"%ls//Test.ini", strPath);	//字符串拼接
	DWORD dwNum1 = GetPrivateProfileStringW(L"metada", L"title", NULL,
		strTitle, MAX_PATH, strFilePath);

	DWORD dwNum2 = GetPrivateProfileStringW(L"声母", L"ch", NULL,
		strCh, MAX_PATH, strFilePath);

	DWORD dwNum3 = GetPrivateProfileStringW(L"声母", L"sh", NULL,
		strSh, MAX_PATH, strFilePath);

	TRACE("#dwNum1 = %d , dwNum2 = %d , dwNum3 = %d", dwNum1, dwNum2, dwNum3);
	USES_CONVERSION;
	char* szTitle = W2A(strTitle);
	char* szSh = W2A(strSh);
	char* szCh = W2A(strCh);
	TRACE("#strTitle = %s , strCh = %s , strSh = %s", szTitle, szCh, szSh);
}

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值