• Config配置文件读写


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

    写配置文件

    使用函数WritePrivateProfileStringW写配置文件

    1. BOOL WritePrivateProfileStringW(
    2. [in] LPCWSTR lpAppName,
    3. [in] LPCWSTR lpKeyName,
    4. [in] LPCWSTR lpString,
    5. [in] LPCWSTR lpFileName
    6. );
    • 参数lpAppName

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

    • 参数lpKeyName

    表示lpAppName下的一个键名

    • 参数lpString

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

    • 参数lpFileName

    表示完整的ini文件名

    读配置文件

    使用GetPrivateProfileStringW读取配置文件

    1. DWORD GetPrivateProfileStringW(
    2. [in] LPCWSTR lpAppName,
    3. [in] LPCWSTR lpKeyName,
    4. [in] LPCWSTR lpDefault,
    5. [out] LPWSTR lpReturnedString,
    6. [in] DWORD nSize,
    7. [in] LPCWSTR lpFileName
    8. );
    • 参数lpAppName

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

    • 参数lpKeyName

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

    • 参数lpDefault

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

    • 参数lpReturnedString

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

    • 参数nSize

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

    • 参数lpFileName

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

    Demo示例

    写配置文件

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

    1. //读写配置文件
    2. void CMyFileCFileView::OnWriteConfig() {
    3. //获取当前路径
    4. WCHAR strPath[MAX_PATH] = { 0 };
    5. GetCurrentDirectoryW(MAX_PATH, strPath);
    6. CString strFilePath;
    7. strFilePath.Format(L"%ls//Test.ini", strPath); //字符串拼接
    8. WritePrivateProfileStringW(L"metada", L"title", L"搜狗双拼", strFilePath); //段名、键名、内容
    9. WritePrivateProfileStringW(L"声母", L"ch", L"I", strFilePath);
    10. WritePrivateProfileStringW(L"声母", L"sh", L"U", strFilePath);
    11. }

    读配置文件

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

    1. //读配置文件
    2. void CMyFileCFileView::OnReadConfig() {
    3. WCHAR strPath[MAX_PATH] = { 0 };
    4. WCHAR strTitle[MAX_PATH] = { 0 };
    5. WCHAR strCh[MAX_PATH] = { 0 };
    6. WCHAR strSh[MAX_PATH] = { 0 };
    7. //获取当前路径
    8. GetCurrentDirectoryW(MAX_PATH, strPath);
    9. TRACE("## strPath = %ls", strPath);
    10. CString strFilePath;
    11. strFilePath.Format(L"%ls//Test.ini", strPath); //字符串拼接
    12. DWORD dwNum1 = GetPrivateProfileStringW(L"metada", L"title", NULL,
    13. strTitle, MAX_PATH, strFilePath);
    14. DWORD dwNum2 = GetPrivateProfileStringW(L"声母", L"ch", NULL,
    15. strCh, MAX_PATH, strFilePath);
    16. DWORD dwNum3 = GetPrivateProfileStringW(L"声母", L"sh", NULL,
    17. strSh, MAX_PATH, strFilePath);
    18. TRACE("#dwNum1 = %d , dwNum2 = %d , dwNum3 = %d", dwNum1, dwNum2, dwNum3);
    19. USES_CONVERSION;
    20. char* szTitle = W2A(strTitle);
    21. char* szSh = W2A(strSh);
    22. char* szCh = W2A(strCh);
    23. TRACE("#strTitle = %s , strCh = %s , strSh = %s", szTitle, szCh, szSh);
    24. }

     

  • 相关阅读:
    gdb结合valgrind一起使用
    Spring 框架学习(六)---- Bean作用域
    Web业务系统常见性能优化手段
    使用bat脚本以json格式导出mongo数据库中指定表数据
    2-44 JQuery
    IoC & DI
    【华为OD机试真题 python】 TLV解析【2022 Q4 | 100分】
    【GitHub】Personal Access Token过期导致本地仓库无法直接push到远程
    计算机毕业设计Java卓越导师双选系统(源码+系统+mysql数据库+Lw文档)
    代码随想录算法训练营第五十七天| LeetCode 392 判断子序列、LeetCode 115 不同的子序列
  • 原文地址:https://blog.csdn.net/qq_54169998/article/details/128136474