INI文件的创建与读取方法

          ini文件(即Initialization file),这种类型的文件中通常存放的是一个程序的初始化信息。ini文件由若干个节(Section)组成,每个Section由若干键(Key)组成,每个Key可以赋相应的值。读写ini文件实际上就是读写某个的Section中相应的Key的值,而这只要借助几个函数即可完成。

一、向ini文件中写入信息的函数

     1. 把信息写入系统的win.ini文件

         BOOL WriteProfileString(
            LPCTSTR lpAppName, // 节的名字,是一个以0结束的字符串
            LPCTSTR lpKeyName, // 键的名字,是一个以0结束的字符串。若为NULL,则删除整个节
            LPCTSTR lpString   // 键的值,是一个以0结束的字符串。若为NULL,则删除对应的键
             )



   2. 把信息写入自己定义的.ini文件
        BOOL WritePrivateProfileString(
            LPCTSTR lpAppName,      // 同上
            LPCTSTR lpKeyName,      // 同上
            LPCTSTR lpString,       // 同上
            LPCTSTR lpFileName      // 要写入的文件的文件名。相对或绝度路径
           )



   3.例用例
        ::WriteProfileString("Test","id","xyz"); 
          //在win.ini中创建一个Test节,并在该节中创建一个键id,其值为xyz


       ::WritePrivateProfileString("Test","id","xyz","d://vc//Ex1//ex1.ini");
          //在Ex1目录下的ex1.ini中创建一个Test节,并在该节中创建一个键id,其值为xyz


        //若Ex1.ini文件与读写该文件的程序在同一个目录下,则上面语句也可写为:
       ::WritePrivateProfileString("Test","id","xym",".//ex1.ini");

二、从ini文件中读取数据的函数
      1、从系统的win.ini文件中读取信息
          (I) 读取字符串
         DWORD GetProfileString(
            LPCTSTR lpAppName,            // 节名
            LPCTSTR lpKeyName,            // 键名,读取该键的值
            LPCTSTR lpDefault,            // 若指定的键不存在,该值作为读取的默认值
            LPTSTR lpReturnedString,      // 一个指向缓冲区的指针,接收读取的字符串
            DWORD nSize                   // 指定lpReturnedString指向的缓冲区的大小
        )
      CString str;
      ::GetProfileString("Test","id","Error",str.GetBuffer(20),20);


       (II) 读取整数

          UINT GetProfileInt(
                    LPCTSTR lpAppName,      // 同上
                    LPCTSTR lpKeyName,      // 同上
                    INT nDefault            // 若指定的键名不存在,该值作为读取的默认值
                     )

       如使用以下语句写入了年龄信息:
       ::WriteProfileString("Test","age","25"); 
       //在win.ini中创建一个Test节,并在该节中创建一个键age,其值为25
       
       
       则可用以下语句读取age键的值:
       int age;
       age=::GetProfileInt("Test","age",0);


     2、从自己的ini文件中读取信息
        (I) 读取字符串
             DWORD GetPrivateProfileString(
                          LPCTSTR lpAppName,            // 同1(1)
                          LPCTSTR lpKeyName,            // 同1(1)
                          LPCTSTR lpDefault,            // 同1(1)
                          LPTSTR lpReturnedString,      // 同1(1)
                          DWORD nSize,                  // 同1(1)
                          LPCTSTR lpFileName            // 读取信息的文件名。相对路径/绝度路径。
             )

        如:
        CString str;
        ::GetPrivateProfileString("Test","id","Error",str.GetBuffer(20),20,".//ex1.ini");
          或:
        ::GetPrivateProfileString("Test","id","Error",str.GetBuffer(20),20,"d://vc//Ex1//ex1.ini");

       (II) 读取整数
      UINT GetPrivateProfileInt(
               LPCTSTR lpAppName,      // 同上
               LPCTSTR lpKeyName,      // 同上
               INT nDefault,           // 若指定的键名不存在,该值作为读取的默认值
               LPCTSTR lpFileName      // 同上
      )


     如使用以下语句写入了年龄信息:
     ::WritePrivateProfileString("Test","age","25",".//ex1.ini"); 
     //在ex1.ini中创建一个Test节,并在该节中创建一个键age,其值为25
     
     则可用以下语句读取age键的值:
     int age;
     age=::GetPrivateProfileInt("Test","age",0,".//ex1.ini");



三、 删除键值或节


       WriteProfileString函数的说明
             BOOL WriteProfileString(
                                LPCTSTR lpAppName, // 节的名字,是一个以0结束的字符串
                                LPCTSTR lpKeyName, // 键的名字,是一个以0结束的字符串。若为NULL,则删除整个节
                                LPCTSTR lpString       // 键的值,是一个以0结束的字符串。若为NULL,则删除对应的键
                          )



       要删除某个节,只需要将WriteProfileString第二个参数设为NULL即可。而要删除某个键,则只需要将该函数的第三个参数设为 NULL即可。这是删除系统的win.ini中的节或键,类似的,要删除自己定义的ini文件中的节或键,也可做相同的操作。


       ::WriteProfileString("Test",NULL,NULL);      //删除win.ini中的Test节
       ::WriteProfileString("Test","id",NULL);      //删除win.ini中的id键


       ::WritePrivateProfileString("Test",NULL,NULL,".//ex1.ini");      //删除ex1.ini中的Test节
       ::WritePrivateProfileString("Test","id",NULL,".//ex1.ini");      //删除ex1.ini中的id键


四、如何判断一个ini文件中有多少个节

       要判断一个ini文件中有多少个节,最简单的办法就是将所有的节名都找出来,然后统计节名的个数。而要将所有的节名找出来,使用GetPrivateProfileSectionNames函数就可以了,其原型如下:


    DWORD GetPrivateProfileSectionNames(
                        LPTSTR lpszReturnBuffer,      // 指向一个缓冲区,用来保存返回的所有节名
                        DWORD nSize,                  // 参数lpszReturnBuffer的大小
                        LPCTSTR lpFileName            // 文件名,相对路径/绝度路径
                        )


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值