C++ 的 ini 配置文件读写/注释库 inicpp 用法 [ header-file-only ]

本文涉及的产品
可观测链路 OpenTelemetry 版,每月50GB免费额度
函数计算FC,每月15万CU 3个月
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 这是一个C++库,名为inicpp,用于读写带有注释的INI配置文件,仅包含一个hpp头文件,无需编译,支持C++11及以上版本。该库提供简单的接口,使得操作INI文件变得容易。用户可通过`git clone`从GitHub或Gitee获取库,并通过包含`inicpp.hpp`来使用`inicpp::iniReader`类。示例代码展示了读取、写入配置项以及添加注释的功能,还提供了转换为字符串、双精度和整型的函数。项目遵循MIT许可证,示例代码可在Linux环境下编译运行。

平常的ini配置文件只能读取,但是这个库不光可以读取、写入配置项,还能给配置项写注释。只有一个hpp头文件,不需要编译,支持C++11及之后版本。

MIT license,配置INI文件就像喝水一样简单。

一、库下载

https://github.com/dujingning/inicpp 或者 https://gitee.com/dujingning/inicpp

二、库使用

- git clone

git clone https://github.com/dujingning/inicpp.git

包含 inicpp.hpp,声明类 inicpp::iniReader,然后就可以随意使用了.

1.读取INI文件示例

#include "inicpp.hpp"

int main()
{
   
    // Load and parse the INI file.
    inicpp::iniReader _ini("config.ini");
    std::cout << _ini["rtsp"]["port"] << std::endl;
}

2.写示例

#include "inicpp.hpp"

int main()
{
   
    // Load and parse the INI file.
    inicpp::iniReader _ini("config.ini");
    _ini.modify("rtsp","port","554");
    std::cout << _ini["rtsp"]["port"] << std::endl;
}

* 3.添加注释

#include "inicpp.hpp"

int main()
{
   
    // Load and parse the INI file.
    inicpp::iniReader _ini("config.ini");
    _ini.modify("rtsp","port","554","this is the listen port for rtsp server");
    std::cout << _ini["rtsp"]["port"] << std::endl;
}

* 4.toString()、toInt()、toDouble()

#include "inicpp.hpp"

int main()
{
   
    // Load and parse the INI file.
    inicpp::iniReader _ini("config.ini");
    _ini.modify("rtsp","port","554","this is the listen port for rtsp server");
    std::cout << _ini["rtsp"]["port"] << std::endl;

    // Convert to string, default is string
    std::string http_port_s = _ini["http"].toString("port");
    std::cout << "to string:\thttp.port = " << http_port_s << std::endl;

    // Convert to double
    double http_port_d = _ini["http"].toDouble("port");
    std::cout << "to double:\thttp.port = " << http_port_d << std::endl;

    // Convert to int
    int http_port_i = _ini["http"].toInt("port");
    std::cout << "to int:\t\thttp.port = " << http_port_i << std::endl;
}

* 5.完整示例:example/main.cpp.

编译demo到example目录下make一下就好了: example/Makefile .

没有make命令,只需要执行: g++ -I../ -std=c++11 main.cpp -o iniExample

6.linux下使用demo的完整示例:example/main.cpp

  • 编译 example/main.cpp

    [jn@jn inicpp]$ ls
    example  inicpp.hpp  LICENSE  README.md
    [jn@jn inicpp]$ cd example/
    [jn@jn example]$ make
    g++ -I../ -std=c++11 main.cpp -o iniExample
    [jn@jn example]$ ls
    iniExample  main.cpp  Makefile
    
  • 运行 iniExample

    [jn@jn example]$ ./iniExample
    get rtsp port:555
    to string:      rtsp.port = 554
    to string:      math.PI   = 3.1415926
    to string:      math.PI   = 3.1415926
    to double:      math.PI   = 3.1415926
    to int:         math.PI   = 3
    to wstring:     other.desc= 你好,世界
    [jn@jn example]$
    
  • 生成 config.ini
    ```bash
    [jn@jn example]$ cat config.ini
    ;no section test:add comment later.
    noSection=yes
    key0=noSectionAndComment
    key1=noSectionAndComment
    key2=noSectionAndComment
    [head]
    ;thanks for your using inicpp project.
    title=inicpp
    ;Permissive license for open-source software distribution.
    license=MIT

[rtsp]
;this is the listen ip for rtsp server.
port=554
ip=127.0.0.1

[math]
;This is pi in mathematics.
PI=3.1415926

[other]
;this test for std::wstring. comment it.
desc=你好,世界
[jn@jn example]$
```

目录
相关文章
|
18天前
|
算法 C++ 容器
C++标准库(速查)总结
C++标准库(速查)总结
52 6
|
1月前
|
存储 算法 C++
C++ STL 初探:打开标准模板库的大门
C++ STL 初探:打开标准模板库的大门
89 10
|
9天前
|
编译器 C语言 C++
配置C++的学习环境
【10月更文挑战第18天】如果想要学习C++语言,那就需要配置必要的环境和相关的软件,才可以帮助自己更好的掌握语法知识。 一、本地环境设置 如果您想要设置 C++ 语言环境,您需要确保电脑上有以下两款可用的软件,文本编辑器和 C++ 编译器。 二、文本编辑器 通过编辑器创建的文件通常称为源文件,源文件包含程序源代码。 C++ 程序的源文件通常使用扩展名 .cpp、.cp 或 .c。 在开始编程之前,请确保您有一个文本编辑器,且有足够的经验来编写一个计算机程序,然后把它保存在一个文件中,编译并执行它。 Visual Studio Code:虽然它是一个通用的文本编辑器,但它有很多插
|
18天前
|
存储 程序员 C++
C++常用基础知识—STL库(2)
C++常用基础知识—STL库(2)
60 5
|
18天前
|
存储 自然语言处理 程序员
C++常用基础知识—STL库(1)
C++常用基础知识—STL库(1)
44 1
|
21天前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
191 3
|
2月前
|
编译器 API C语言
超级好用的C++实用库之跨平台实用方法
超级好用的C++实用库之跨平台实用方法
36 6
|
2月前
|
安全 C++
超级好用的C++实用库之环形内存池
超级好用的C++实用库之环形内存池
44 5
|
2月前
|
缓存 网络协议 Linux
超级好用的C++实用库之套接字
超级好用的C++实用库之套接字
31 1
|
2月前
|
存储 算法 安全
超级好用的C++实用库之sha256算法
超级好用的C++实用库之sha256算法
68 1