• simpleini库的介绍和使用(面向业务编程-格式处理)


    simpleini库的介绍和使用(面向业务编程-格式处理)

    介绍

    simpleini是一个跨平台的ini格式处理库,提供了一些简单的API来读取和写入ini风格的配置文件。它支持ASCII、MBCS和Unicode格式的数据文件。它被明确设计为可移植到任何平台,并已在Windows, WinCE和Linux上进行了测试。使用MIT许可证作为开源和免费发布。

    使用实例

    simpleini的使用很简单,只需要引入头文件,然后就可以开始用了

    #include "SimpleIni.h"
    

    示例代码(main.cpp)如下:

    int main() {
        // 声明一个CSimpleIniA对象
        CSimpleIniA ini;
        ini.SetUnicode();
        // 加载文件并解析
        SI_Error rc = ini.LoadFile("example.ini");
        if (rc < 0) {
            ::std::cout << "error handle" << ::std::endl;
        }
        // 获取值
        const char* pv = nullptr;
        pv = ini.GetValue("section", "key", "default");
        if (nullptr != pv) {
            ::std::cout << pv << ::std::endl;
        }
        // 设置值
        ini.SetValue("section", "key", "newvalue");
        // 设置完成,重新获取
        pv = ini.GetValue("section", "key", "default");
        if (nullptr != pv) {
            ::std::cout << pv << ::std::endl;
        }
        // 保存到文件
        rc = ini.SaveFile("example.ini");
        if (rc < 0) {
            ::std::cout << "error handle" << ::std::endl;
        }
    }
    

    上面代码非常简单

    其实ini文件就是一个section(一个小节)

    在这个section里面存储一个 键值对,键值对 的值其实是字符串类型的(所以处理数字的时候要手动转成数字类型)。

    ini支持的数据类型不多,所以应用也没那么广泛,一般常用在Windows的软件配置里面

    因为ini文件可读性好,而且非常的简单、容易解析

    ini文件的注释格式为英文分号开头做单行注释,没有多行注释(可以每行注释加一个;)。例如

    [setion]
    ; 网络信息(network info)
    ip = 192.168.1.2
    port = 50000
    

    以库的形式添加到项目中

    simpleini以库的形式添加到项目中

    本文为作者原创文章,转载请注明出处:https://www.cnblogs.com/nbtech/p/use_simpleini_library.html

    首先我们下载一下simpleini源代码

    mkdir UseSimpleIniProject && cd UseSimpleIniProject
    git clone https://github.com/brofield/simpleini.git
    vim CMakeLists.txt
    

    输入以下文本

    # 下面3行是我们正常一个文件的CMake写法,注意这里LANGUAGES要加一个C,因为simpleini是一个C库
    cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
    project(ini-test LANGUAGES C CXX)
    add_executable(ini_test main.cpp)
    # 添加simpleini库,1、包含头文件目录;2、添加库的源文件,声明这个库;3、将这个库链接到上面的目标文件中
    include_directories(simpleini)
    add_library(simpleini
        STATIC
        simpleini/ConvertUTF.c
        )
    target_link_libraries(ini_test simpleini)
    

    然后main.cpp文件就是我们上面那个小节的示例代码

    写完之后创建目录并编译

    mkdir build && cd build
    cmake .. && make
    

    就可以看到编译和链接的过程

    [  0%] https://www.cnblogs.com/nbtech/p/use_simpleini_library.html
    [ 25%] Building C object CMakeFiles/simpleini.dir/simpleini/ConvertUTF.c.o
    [ 50%] Linking C static library libsimpleini.a
    [ 50%] Built target simpleini
    [ 75%] Building CXX object CMakeFiles/ini_test.dir/main.cpp.o
    [100%] Linking CXX executable ini_test
    [100%] Built target ini_test
    

    在我们项目中,用CMake添加simpleini库操作如上

    如果想改成共享库,只需要把CMakeLists.txt的STATIC改成SHARED即可

    交叉编译?

    有时候我们希望它可以跨平台,那么只需要在cmake配置的时候指定交叉编译工具即可

    cmake -D CMAKE_C_COMPILER=arm-linux-gnueabihf-gcc -D CMAKE_CXX_COMPILER=arm-linux-gnueabihf-g++ ..
    

    __EOF__

  • 本文作者: Kevin
  • 本文链接: https://www.cnblogs.com/nbtech/p/use_simpleini_library.html
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • 相关阅读:
    【js学习笔记五十四】BFC方式
    ISE的FPGA程序加载与固化——Omapl138/TMS320C6748+FPGA核心板
    MySQL语句大全及用法
    nginx proxy_set_header设置、自定义header
    net core 程序 发布到 docker 中
    CentOS 7 安装 Tomcat
    振弦式渗压计与振弦采集仪组成大坝水库监测
    matplotlib你真的明白plt,fig和ax吗
    HTTP中的重定向和请求转发的区别
    【教程】 iOS混淆加固原理篇
  • 原文地址:https://www.cnblogs.com/nbtech/p/use_simpleini_library.html