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