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++ ..
simpleini库的介绍和使用(面向业务编程-格式处理)的更多相关文章
- 前端常用的库和实用技术之JavaScript面向切面编程
Aspect Oriented Programming(AOP)面向切面编程是一个比较热门的话题. AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程 中的某个步骤或阶段,以 ...
- 程序员过关斩将-- 喷一喷坑爹的面向UI编程
摒弃面向UI编程 为何喷起此次话题,因为前不久和我们首席架构师沟通,谈起程序设计问题,一不小心把UI扯进来,更把那些按照UI来编程的后台工程师也扯了进来.今天特意百度了一下(其实程序员应该去googl ...
- OpenCV库文件介绍
以前都是直接用opencv,都没有仔细研究过,这次把库文件都介绍一下. 1.build和source 当我们安装完opencv中,你会发现在opencv文件夹中有两个文件夹,build和source, ...
- Python常用的库简单介绍一下
Python常用的库简单介绍一下fuzzywuzzy ,字符串模糊匹配. esmre ,正则表达式的加速器. colorama 主要用来给文本添加各种颜色,并且非常简单易用. Prettytable ...
- ArUco----一个微型现实增强库的介绍及视觉应用(二)
ArUco----一个微型现实增强库的介绍及视觉应用(二) 一.第一个ArUco的视觉应用 首先介绍第一个视觉应用的Demo,这个应用场景比较简单,下面具体介绍: 1. 应用场景 主线程:通过摄像头检 ...
- ArUco----一个微型现实增强库的介绍及视觉应用(一)
ArUco----一个微型现实增强库的介绍及视觉应用(一) 一.ArUco简介 ArUco是一个开源的微型的现实增强库,目前好像已经集成在OpenCV3.0以上的版本内了,它除了用于现实增强,还很用于 ...
- STL学习系列之一——标准模板库STL介绍
库是一系列程序组件的集合,他们可以在不同的程序中重复使用.C++语言按照传统的习惯,提供了由各种各样的函数组成的库,用于完成诸如输入/输出.数学计算等功能. 1. STL介绍 标准模板库STL是当今每 ...
- c/c++ 标准库 pair 介绍
标准库 pair 介绍 问题:map里的元素由key和value组成,这个key和value的组合是什么类型呢??? 答案:pair类型 pair介绍: 它是模板 有2个公有成员可供访问. first ...
- 【Linux】 Ncures库的介绍与安装
Ncures库的介绍 ncurses(new curses)是一套编程库,它提供了一系列的函数以便使用者调用它们去生成基于文本的用户界面. ncurses名字中的n意味着“new”,因为它是curse ...
- iOS 开源库系列 Aspects核心源码分析---面向切面编程之疯狂的 Aspects
Aspects的源码学习,我学到的有几下几点 Objective-C Runtime 理解OC的消息分发机制 KVO中的指针交换技术 Block 在内存中的数据结构 const 的修饰区别 block ...
随机推荐
- ARC(Automatic Reference Counting)自动引用计数 unowned、weak 使用区别
自动引用计数 引用类型(类.函数.闭包) 当声明一个变量指向某个引用类型时 当前引用类型的引用计数就会加1 当变量不指向该类型时 引用类型就会 -1 当引用计数为0时 当前引用类型就会被系统回收 i ...
- 杭电 oj 第几天?
Problem Description 给定一个日期,输出这个日期是该年的第几天. Input 输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input , ...
- MySQL8.0的下载、安装、配置
转1: MySQL8.0的下载.安装.配置 MySQL8安装教程(下载.安装.连接.卸载) Navicat Premium 15激活(含注册机)
- holiday10
holiday10 ssh配置别名 每次输入 ssh -p port user@remote 时间久了都会觉得麻烦, 而 配置别名 可以让我们进一步偷懒,比如用 ssh mac 来代替上面一长串,那么 ...
- Java-Excel表数据转List对象->导入数据库
1 import java.io.File; 2 import java.io.FileInputStream; 3 import java.util.ArrayList; 4 import java ...
- Mac 卸载 Anaconda3
终端安装anaconda-clean conda install anaconda-clean 删除所有与 Anaconda 有关的文件与目录 anaconda-clean --yes 第 2 步中的 ...
- Kubernetes--Ingress资源类型
Ingress资源类型 基于HTTP暴露的每个Service资源均可发布于一个独立的FQDN主机名之上,如 " www.ik8s.io " :也可发布于某主机上的URL路径之上,从 ...
- HttpClient请求接口实例demo
HttpClient是Apache中的一个开源的项目.它实现了HTTP标准中Client端的所有功能,使用它能够很容易地进行HTTP信息的传输.HttpClient的主要功能: 实现了所有 HTTP ...
- 视觉里程计1-SLAMCP7
--20.11.27 在CP2里面讲到,视觉SLAM主要分为视觉前端以及优化后端,后端也被称为视觉里程计(VO).根据相邻图像的信息,估计粗略的相机运动,给后端提供较好的初始值.VO的实现方法按是否需 ...
- UTT艾泰路由器默认口令(admin/admin)
网络空间资产搜索: 登陆弱口令:admin/****** 登陆成功 End!!!