配置文件

GetPrivateProfile系列函数

 

1)写入.ini文件:

BOOL WritePrivateProfileString(

  LPCTSTR lpAppName,  // INI文件中的一个字段名[节名]可以有很多个节名

  LPCTSTR lpKeyName,  // lpAppName 下的一个键名,也就是里面具体的变量名

  LPCTSTR lpString,   // 键值,也就是数据

  LPCTSTR lpFileName  // INI文件的路径

)

经典句:return WritePrivateProfileString(def_CLOUD_SECTION, szKey,bValue ? _T("1") : _T("0"), szIniPath);

 

 

2)读取.ini文件:

 

    DWORD GetPrivateProfileString(

      LPCTSTR lpAppName,        // INI文件中的一个字段名[节名]可以有很多个节名

      LPCTSTR lpKeyName,        // lpAppName 下的一个键名,也就是里面具体的变量名

      LPCTSTR lpDefault,        // 如果lpReturnedString为空,则把个变量赋给lpReturnedString

      LPTSTR lpReturnedString,  // 存放键值的指针变量,用于接收INI文件中键值(数据)的接收缓冲区

      DWORD nSize,            // lpReturnedString的缓冲区大小

      LPCTSTR lpFileName        // INI文件的路径

    );

  <返回值>  

   取得字符串 lpReturnedString,  同时返回一个整数,大小为取得字符串的长度。

 

3)读取整形值:(返回值为读到的整)

 

    UINT GetPrivateProfileInt(

      LPCTSTR lpAppName,  // INI文件中的一个字段名[节名]可以有很多个节名

      LPCTSTR lpKeyName,  // lpAppName 下的一个键名,也就是里面具体的变量名

      INT nDefault,       // 如果没有找到指定的数据返回,则把个变量值赋给返回值

      LPCTSTR lpFileName  // INI文件的路径

    );

int a= GetPrivateProfileInt("b", "c", 1, "c:\\d.ini");

定义变量a 查找c盘d.ini配置文件下的b小段目录下的,c参数,如果找不到使用默认值1.

 

注:没有WritePrivateProfileInt(),可以使用WritePrivateProfileString();

 

4)从指定的文件中取得全部的关键字的值,获取指定小节所有项名和值的一个列表

DWORD GetPrivateProfileSection(

  LPCTSTR lpAppName,       //欲获取的小节。注意这个字串不区分大小写

  LPTSTR lpReturnedString,   //项和值字串的列表。每个字串都由一个NULL字符分隔,最后一个字串后面用两个NULL字符中止

  DWORD nSize,                 //缓冲区的大小。在windows系统中最大值为32767

  LPCTSTR lpFileName;        //初始化文件的名字。如没有指定完整路径名,windows就在Windows目录中查找文件

)

 

 

例子1:

  string strPath(CONFIG);

    strPath += "\\LOG.ini";

    cout<<strPath<<endl;

    int res = WritePrivateProfileStringA("section", "key1", "123", strPath.c_str());//0表示失败,非0表示成功

    cout<<res<<endl;

    int num = GetPrivateProfileIntA("section", "key1", 100, strPath.c_str());//如果没有section和key1的话才会返回默认值100

    cout<<num<<endl;

    char str[10];

    num = GetPrivateProfileStringA("section2", "key3", "no find", str, sizeof(str), strPath.c_str());//会忽略value前的空格

    cout<<num<<endl;

    cout<<str<<endl;

    char str2[50];

    num = GetPrivateProfileSectionA("section", str2, sizeof(str2), strPath.c_str());

    cout<<num<<endl;

    for (char *p = str2; p < str2 + 50; p++)

    {

        cout<<*p;

    }

    cout<<endl;

 

 

例子2:

LPTSTR lpPath = new char[MAX_PATH];

 

strcpy(lpPath, "D:\\IniFileName.ini");

 

WritePrivateProfileString("LiMing", "Sex", "Man", lpPath);

WritePrivateProfileString("LiMing", "Age", "20", lpPath);

 

WritePrivateProfileString("Fangfang", "Sex", "Woman", lpPath);

WritePrivateProfileString("Fangfang", "Age", "21", lpPath);

 

 

 

delete [] lpPath;

 

 

INI文件如下:

 

[LiMing]

Sex=Man

Age=20

[Fangfang]

Sex=Woman

Age=21

 

读INI文件:

 

 

LPTSTR lpPath = new char[MAX_PATH];

LPTSTR LiMingSex = new char[6];

int LiMingAge;

LPTSTR FangfangSex = new char[6];

int FangfangAge;

 

 

strcpy(lpPath, "..\\IniFileName.ini");

 

GetPrivateProfileString("LiMing", "Sex", "", LiMingSex, 6, lpPath);

LiMingAge = GetPrivateProfileInt("LiMing", "Age", 0, lpPath);

 

GetPrivateProfileString("Fangfang", "Sex", "", FangfangSex, 6, lpPath);

FangfangAge = GetPrivateProfileInt("Fangfang", "Age", 0, lpPath);

 

 

 

delete [] lpPath;

-------------------------------------------------------------------------

原文1:https://blog.csdn.net/wuguai4/article/details/7287346

参考2:https://www.cnblogs.com/bigcat814/archive/2012/12/17/2821364.html

posted @ 2019-06-02 14:55  gd_沐辰  阅读(239)  评论(0编辑  收藏  举报