600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > c语言解析toml文件 使用cpptoml 读取 TOML 格式配置文件

c语言解析toml文件 使用cpptoml 读取 TOML 格式配置文件

时间:2024-04-13 09:46:26

相关推荐

c语言解析toml文件 使用cpptoml 读取 TOML 格式配置文件

1. 获取cpptoml

只需要 cpptoml.h 。

$gitclone/skystrife/cpptoml.git

2. TOM配置

mysql.toml配置文件如下:

[Title]

Author="lowkey2046"

[MySQL]

Host="127.0.0.1"

Port=3306

Database="testdb"

Username="root"

Password="lowkey2046"

3. C++代码

mysqltoml.cpp 文件如下:

#include

#include"cpptoml.h"

structMySQLArg{

std::stringhost;

int32_tport;

std::stringdatabase;

std::stringusername;

std::stringpassword;

};

boolreadMySQLConfig(constchar*file,MySQLArg&mysqlArg);

intmain(intargc,char**argv)

{

charfilename[]="./mysql.toml";

MySQLArgmysqlArg;

if(readMySQLConfig(filename,mysqlArg)){

std::cout<

std::cout<

std::cout<

std::cout<

std::cout<

}

return0;

}

boolreadMySQLConfig(constchar*file,MySQLArg&mysqlArg)

{

std::shared_ptr<:table>g;

try{

g=cpptoml::parse_file(file);

}catch(constcpptoml::parse_exception&e){

std::cerr<

returnfalse;

}

autoStrings=[&](constchar*key,constchar*value)->std::string{

if(g->contains_qualified(key)){

returng->get_qualified(key)->as<:string>()->get();

}

if(!value)

returnstd::string();

returnstd::string(value);

};

autoInteger=[&](constchar*key,intvalue)->int{

if(g->contains_qualified(key)){

autointeger=g->get_qualified(key)->as()->get();

returnstatic_cast(integer);

}

returnvalue;

};

mysqlArg.host=Strings("MySQL.Host","127.0.0.1");

mysqlArg.port=Integer("MySQL.Port",3306);

mysqlArg.database=Strings("MySQL.Database","testdb");

mysqlArg.username=Strings("MySQL.Useranme","root");

mysqlArg.password=Strings("MySQL.Password","123456");

returntrue;

}

4. 编译

$g++-std=c++11mysqltoml.cpp-omysqltoml

5. 执行

$./mysqltoml

Host:127.0.0.1

Port:3306

Database:testdb

Username:root

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。