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