c语言解析toml文件,使用cpptoml 读取 TOML 格式配置文件
1. 获取cpptoml
只需要 cpptoml.h 。
$ git clone https://github.com/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"
struct MySQLArg{
std::string host;
int32_t port;
std::string database;
std::string username;
std::string password;
};
bool readMySQLConfig(const char *file, MySQLArg &mysqlArg);
int main(int argc, char **argv)
{
char filename[] = "./mysql.toml";
MySQLArg mysqlArg;
if (readMySQLConfig(filename, mysqlArg)) {
std::cout <
std::cout <
std::cout <
std::cout <
std::cout <
}
return 0;
}
bool readMySQLConfig(const char *file, MySQLArg &mysqlArg)
{
std::shared_ptr<:table> g;
try {
g = cpptoml::parse_file(file);
} catch (const cpptoml::parse_exception &e) {
std::cerr <
return false;
}
auto Strings = [&](const char *key, const char * value)->std::string {
if (g->contains_qualified(key)) {
return g->get_qualified(key)->as<:string>()->get();
}
if (!value)
return std::string();
return std::string(value);
};
auto Integer = [&](const char *key, int value)->int {
if (g->contains_qualified(key)) {
auto integer = g->get_qualified(key)->as()->get();
return static_cast(integer);
}
return value;
};
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");
return true;
}
4. 编译
$ g++ -std=c++11 mysqltoml.cpp -o mysqltoml
5. 执行
$ ./mysqltoml
Host:127.0.0.1
Port:3306
Database:testdb
Username:root
c语言解析toml文件,使用cpptoml 读取 TOML 格式配置文件相关推荐
- Python语言解析xml文件
python语言解析xml文件的常用的有两种方式: 通过MiniDom库解析xml文件 通过ElementTree库解析xml文件 MiniDom方式解析xml xml文件以data.xml为例,具体 ...
- c语言 自己编程解析 xml,C语言解析.XML文件
最近手头上有个活在忙,中间很重要的一部分就是用C语言将.XML文件中想要的key和value读出来,与之前已有的值进行比较. 核心的.XML文件的格式如下: zzz xxx yyy 而我的思路是这样的 ...
- python解析xml文件选用模块_python语言解析xml文件的常用的有两种方式
MiniDom方式解析xml xml文件以data.xml为例,具体操作如下: data.xml: 保存用户的信息 Jordy 12345678 20 男 上网 功夫 34443678 18 男 功夫 ...
- Golang输出toml文件时保留原toml注释
有这样一种使用场景,Golang从文件或字符串中读取toml数据并解析,然后进行相应的修改,最后重新写回到文件中,由于一般的toml库不会去特别处理注释,重新生成的toml文件中所有原始的注释都会丢失 ...
- c语言怎么解析midi文件,c – 无法读取midi文件? [扩展规格?]
我正在尝试用C语言读取midi文件而且我遇到了一个错误,这个错误似乎是标准midi规范中未定义的事件(从许多站点检索到包括此: http://www.sonicspot.com/guide/midif ...
- c语言解析zip文件内容,C语言怎么读取zip文件内容??
#include "stdio.h" #include "stdlib.h" void main() { FILE *fp; /*定义指向文件的指针*/ cha ...
- java 解析der文件_java-如何读取也用bouncycastle在DER中编码的PK...
我已经尝试过以下问题的答案: 但是由于我调用时我的加密密钥已编码为DER Object object = pemParser.readObject(); 对象为null. 我可以使用openssl的命 ...
- C语言解析pcap文件得到HTTP信息实例(原创,附源码)
原文:http://xiexiaohui.com.host2.ugocn.com/index.php/archives/34 转载请注明出处.来自 hello xiexh (xiexiaohui092 ...
- java解析csv文件写入mysql_java读取cvs文件并导入数据库
本文实例为大家分享了java读取cvs文件并导入数据库的具体代码,供大家参考,具体内容如下 首先获取文件夹下面的所有类型相同的excel,可以用模糊匹配contains("匹配字段" ...
最新文章
- 三星 arm9 linux,基于arm9内核三星s3c2410平台下linux四键按键驱动程序
- 多面体的顶点方向以及分解定理以及多胞形凸组合
- IDEA VS 快捷键 大全
- 常见问题—打包压缩问题
- 【00】设计模式概要
- 树莓派 Ubuntu mate 18.04 下开启vncserver
- 全球及中国皮裤行业消费需求及未来产销前景预测报告2022-2027年
- Microsoft Teams的Meet Now功能
- 【操作系统复习】进程的定义、组成、组织方式
- 阿里云 redis mysql_Redis 和 MySQL数据一致
- 依赖反转原理,IoC容器和依赖注入:第5部分
- Android Activity和Fragment的生命周期图
- java infinity 处理_Java:如何执行向-Infinity而不是0的整数除法?
- SWMM面板基础认识
- Tom猫爱吃喝_Python面向对象“又“入门
- nslookup查询域名系统服务器,域名解析系统DNS诊断命令nslookup详解
- 计算各位数字的平方和
- 都是行业盛宴,AWE和CES等展会到底有啥不一样?
- RDKit | 子结构搜索和MCS算法
- 【数智化案例展】浙江电信——数据中台与BI技术助力通信行业驱动高质量数据价值的流通闭环...
热门文章
- 一文看懂 TensorFlow 2.x / keras 安装与GPU支持
- 10.1寸工业三防平板应用于工业自动化生产
- 【webrtc视频会议的搭建】端到端(E2EE)的加密
- “远程计算机或设备将不接受连接”的解决办法
- 一篇超详细的vue项目前端自动化测试教学!
- 夜光祝愿大家 520 快乐
- java json keyset_Java JsonObject.keySet方法代码示例
- 云计算学习入门:云计算基础服务组件讲解
- linux 进程及调度基础知识
- 在人员数多的工厂适合应用人脸识别测温一体机吗?