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

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

时间:2023-03-09 09:11:19浏览次数:57  
标签:CXX 编程 simpleini test 格式 main ini

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++ ..

标签:CXX,编程,simpleini,test,格式,main,ini
From: https://www.cnblogs.com/nbtech/p/use_simpleini_library.html

相关文章

  • python入门学习-2.特性、函数、面向对象编程、文件读写
    高级特性切片取一个list或tuple的部分元素>>>L=['Michael','Sarah','Tracy','Bob','Jack']笨方法:>>>[L[0],L[1],L[2]]['Michael','Sarah','Tracy']切......
  • 实验1 Python开发环境使用和编程初体验
    一.实验结论:实验任务1:task1_1.py程序源码:1#print输出的几种用法23#用法1:用于输出单个字符串或单个变量4print('hey,u')56#用法2:用于输出多个数......
  • JS系列---【转化时间格式moment】
    1.先安装momentnpminstallmoment--save2.在main.js进入并加到原型上供全局使用importmomentfrom'moment';//moment.locale('zh-cn');//根据情况需要Vue.prot......
  • 网络编程学习笔记
    视频链接【C/C++网络编程,从socket到epoll】https://www.bilibili.com/video/BV11Z4y157RY?vd_source=8d1ec00b45049370fe349649f1886a9a总的来说是偏应用性的视频分享,原理......
  • 实验1 python开发环境使用和编程初体验
    #task1_1.pyprint('hey,u')print('hey','u')x,y,z=1,2,3print(x,y,z)print('x=%d,y=%d,z=%d'%(x,y,z))print('x={},y={},z={}'.format(x,......
  • 并发编程BUG源头
    背景核心矛盾CPU/内存/IO设备的速度差异解决思路计算机体系结构——CPU增加了缓存,以均衡与内存的速度差异操作系统——操作系统增加了进程、线程,以分时复用CPU,进而......
  • AntDesignVue的时间选择器a-date-picker范围格式化时间
    业务效果图核心代码<template><a-date-pickerv-model='record.payTime'show-timeautoclearplaceholder='请选择付款时间'valueFormat='YYYY-MM-DDHH:mm:ss'......
  • 如何轻松学习网页设计和网页编程?
    学习网页设计和网络编程可能是一种有趣而有意义的体验,但需要时间,精力和练习.这里有一些技巧可以帮助您更轻松地学习这些技能:从基础知识开始:在您深入研究高级主题之前,重......
  • 平衡车项目MPU6050编程感想
    0.发现延时函数没有用,延时1s,但是printf()的频率非常快,目前不知道原因,猜测与MPU6050的FIFO有关系。 1. 昨天读数据,同时读编码器和MPU6050的一个实验,如果编码器能读数,M......
  • 直播网站源码,vue工具类,时间格式化
    直播网站源码,vue工具类,时间格式化最近做uniapp经常用到时间格式化,需要转为刚刚、几分钟前等字符串格式,自己根据需求整理了一个工具类 效果说明:时间转字符串格式,时间戳......