ini配置文件
INI文件(Initialization File,初始化文件)是一种纯文本格式的配置文件,格式如下:
- 中括号内
[]为节名,一个文件可以有多个节,每个节内可以包含若干个键值对
ini
[section1]
key1 = value1 ; 注释以分号开头
key2 = value2 # 井号也可以是注释
[section2]
key3 = value3
key4 = value4读取ini文件
GetPrivateProfileString()用于读取ini文件内容
c++
#ifdef UNICODE
#define GetPrivateProfileString GetPrivateProfileStringW
#else
#define GetPrivateProfileString GetPrivateProfileStringA
#endif // !UNICODE
DWORD GetPrivateProfileStringA(
[in] LPCTSTR lpAppName, // 节名
[in] LPCTSTR lpKeyName, // 键名
[in] LPCTSTR lpDefault, // 默认值
[out] LPSTR lpReturnedString, // 指向接收检索到的字符串的缓冲区的指针。
[in] DWORD nSize, // lpReturnedString 参数指向的缓冲区的大小(以字符为单位)。
[in] LPCTSTR lpFileName // 读取的文件名
);
DWORD GetPrivateProfileStringW(
[in] LPCWSTR lpAppName, // 节名
[in] LPCWSTR lpKeyName, // 键名
[in] LPCWSTR lpDefault, // 默认值
[out] LPWSTR lpReturnedString, // 指向接收检索到的字符串的缓冲区的指针。
[in] DWORD nSize, // lpReturnedString 参数指向的缓冲区的大小(以字符为单位)。
[in] LPCWSTR lpFileName // 读取的文件名
);MFC中使用如下
cpp
TCHAR szBuffer[256];
DWORD dwRet = ::GetPrivateProfileString(
_T("Section"),
_T("Key"),
_T("DefaultValue"),
szBuffer,
sizeof(szBuffer) / sizeof(TCHAR),
_T("C:\\Desktop\\config.ini"), // 路径中\要写两个用于转义
);
CString strValue = szBuffer; // 获取的值写入ini文件
GetPrivateProfileString()用于写入ini文件内容
c++
#ifdef UNICODE
#define WritePrivateProfileString WritePrivateProfileStringW
#else
#define WritePrivateProfileString WritePrivateProfileStringA
#endif // !UNICODE
BOOL WritePrivateProfileStringA(
[in] LPCSTR lpAppName, // 节名
[in] LPCSTR lpKeyName, // 键名
[in] LPCSTR lpString, // value值
[in] LPCSTR lpFileName // 文件路径
);
BOOL WritePrivateProfileStringW(
[in] LPCWSTR lpAppName, // 节名
[in] LPCWSTR lpKeyName, // 键名
[in] LPCWSTR lpString, // value值
[in] LPCWSTR lpFileName // 文件路径
);MFC中使用如下
c++
::WritePrivateProfileString(
_T("Section"),
_T("Key"),
_T("Value"),
_T("C:\\Desktop\\config.ini")
);MFC获取桌面路径
c++
void GetDesktopPath(CString& strPath) {
TCHAR szPath[MAX_PATH];
if (SUCCEEDED(SHGetFolderPath(
NULL, // 无父窗口
CSIDL_DESKTOP, // 桌面标识符
NULL, // 当前用户令牌
SHGFP_TYPE_CURRENT, // 获取当前路径(非默认)
szPath))) // 输出缓冲区
{
strPath = szPath; // 成功时赋值
}
else {
strPath.Empty(); // 失败时清空
}
}
// 使用
CString strDesktopPath;
GetDesktopPath(strDesktopPath);