simpleini庫的介紹和使用(面向業務程式設計-格式處理)

2023-03-09 12:01:16

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