ini文件、Unicode、_T、_L相关笔记

ini文件、Unicode、_T、_L相关笔记的一些笔记

一. ini文件相关内容

  1. ini是什么意思?
  • ini是Initialization File的缩写,意思为“配置文件;初始化文件;”,是初始化设置文件的后缀名;ini文件是windows的系统配置文件所采用的存储格式,统管windows的各项配置。ini是初始化设置文件的后缀名,一般用户就用windows提供的各项图形化管理界面就可实现相同的配置了。
  1. 文件扩展名
  • 配置文件.ini
    请注意:我们所讨论的是项目中的配置文件,它是整个项目共用的。所以它要有一个项目使用的文件名,其后缀是.ini。例如:端口配置.ini
  1. 格式
    INI文件由节、键、值组成。
    节[section]
    参数(键=值)name=value
    注解 使用分号表示(;)。在分号后面的文字,直到该行结尾都全部为注解。
  2. 案例
    ;exp ini file
    [port]
    portname=COM4
    port=4  
    
  3. 作用
    .ini , .inc之类的文件,一般是放一些常量或数据库链接语句等,再在需要的页面包含进去,和直接命为 asp 是没什么区别的。但为了安全性,最好不要用这些后缀名,因为知道文件名时,在浏览器里输入该文件的地址时,可看到所有内容的。

二. 关于VS2019下 .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      // 要写入的文件的文件名。
    //需要注意的是,C系列的语言中,转义字符'//'表示反斜线'/'。另外,当使用相对路径时,//前的.号不能丢掉了。
    
  • 例如: 我需要在当前目录下的ex1.ini中创建一个节(名字是INFO),并在该节中创建一个键(键的名字是张三),键值为:000。下面是我的源程序:

    //要加#include<Windows.h>头文件和#include <atlstr.h>
    //加#include <atlstr.h>头文件是因为WritePrivateProfileString函数要加_T(),至于为啥加_T后面找到原因再补充
    #include<Windows.h>
    #include <stdio.h>
    #include <atlstr.h>
    
    int main()
    {
            
        WritePrivateProfileString(_T("INFO"), _T("张三"), _T("000"), _T(".\\ex1.ini"));
        return 0;
    }  
    
  • 程序运行以后会在ex1.ini文件中添加以下内容:
    在这里插入图片描述

读操作:

  • 使用到的函数:
      1、从系统的win.ini文件中读取信息
      (1) 读取字符串
      DWORD GetProfileString(
        LPCTSTR lpAppName,            // 节名
        LPCTSTR lpKeyName,            // 键名,读取该键的值
        LPCTSTR lpDefault,            // 若指定的键不存在,该值作为读取的默认值
        LPTSTR lpReturnedString,      // 一个指向缓冲区的指针,接收读取的字符串
        DWORD nSize                   // 指定lpReturnedString指向的缓冲区的大小(2) 读取整数
        UINT GetProfileInt(
        LPCTSTR lpAppName,      // 同上
        LPCTSTR lpKeyName,      // 同上
        INT nDefault            // 若指定的键名不存在,该值作为读取的默认值2、从自己的ini文件中读取信息
      (1) 读取字符串
        DWORD GetPrivateProfileString(
        LPCTSTR lpAppName,            // 同1(1)
        LPCTSTR lpKeyName,            // 同1(1)
        LPCTSTR lpDefault,            // 同1(1)
        LPTSTR lpReturnedString,      // 同1(1)
        DWORD nSize,                  // 同1(1)
        LPCTSTR lpFileName            // 读取信息的文件名。(2) 读取整数
      UINT GetPrivateProfileInt{
        LPCTSTR lpAppName,      // 同上
        LPCTSTR lpKeyName,      // 同上
        INT nDefault,           // 若指定的键名不存在,该值作为读取的默认值
        LPCTSTR lpFileName      // 同上
      }
    
  • 例如: 通过节名和键名查找ex1.ini文件中的键值,使用 GetPrivateProfileString函数读取,下面是我的源程序:
      #include<Windows.h>
      #include <stdio.h>
      #include <atlstr.h>
      #include <iostream>
      using namespace std;
    
      int main()
      {
          CString str ;//定义一个CString类型的变量str,用来接调用函数的查找值
          int a;//定义一个变量
          GetPrivateProfileString(_T("INFO"), _T("张三"), _T(" "),str.GetBuffer(20),20, _T("./ex1.ini"));//第一个参数为节名,第二个参数为键名,第三个参数为需要查找的键值(为空就可以), 第四个参数为接收INI文件中的值的CString对象,即接收缓冲区,第五个参数为缓冲区的大小,第六个参数为要查找的文件(要输入路径)。
          a = _ttoi(str);//把CString类型的值转换成int型,方便输出
          printf("%d",a);//输出读取到的值
          
          return 0;
      }
    
  • 下面是我的程序运行结果:
    在这里插入图片描述

三、有关 _T的知识:

  1. 百度搜索词条 :Unicode
  2. 百度搜索词条: UTF-8
  3. 在VS2019下创建工程,编码默认为Unicode格式,这时如果需要将字符串作为参数传递时会报错,错误如下:
    在这里插入图片描述
  4. 解决办法:右键项目->属性->高级->高级属性->字符集->设置为 使用多字节字符集,即可解决。
  5. 说明:
  • T:_T 会根据工程的设置自动转换UNICODE和非UNICODE
  • L:_L 就是转为UNICODE
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值