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 格式配置文件相关推荐

  1. Python语言解析xml文件

    python语言解析xml文件的常用的有两种方式: 通过MiniDom库解析xml文件 通过ElementTree库解析xml文件 MiniDom方式解析xml xml文件以data.xml为例,具体 ...

  2. c语言 自己编程解析 xml,C语言解析.XML文件

    最近手头上有个活在忙,中间很重要的一部分就是用C语言将.XML文件中想要的key和value读出来,与之前已有的值进行比较. 核心的.XML文件的格式如下: zzz xxx yyy 而我的思路是这样的 ...

  3. python解析xml文件选用模块_python语言解析xml文件的常用的有两种方式

    MiniDom方式解析xml xml文件以data.xml为例,具体操作如下: data.xml: 保存用户的信息 Jordy 12345678 20 男 上网 功夫 34443678 18 男 功夫 ...

  4. Golang输出toml文件时保留原toml注释

    有这样一种使用场景,Golang从文件或字符串中读取toml数据并解析,然后进行相应的修改,最后重新写回到文件中,由于一般的toml库不会去特别处理注释,重新生成的toml文件中所有原始的注释都会丢失 ...

  5. c语言怎么解析midi文件,c – 无法读取midi文件? [扩展规格?]

    我正在尝试用C语言读取midi文件而且我遇到了一个错误,这个错误似乎是标准midi规范中未定义的事件(从许多站点检索到包括此: http://www.sonicspot.com/guide/midif ...

  6. c语言解析zip文件内容,C语言怎么读取zip文件内容??

    #include "stdio.h" #include "stdlib.h" void main() { FILE *fp; /*定义指向文件的指针*/ cha ...

  7. java 解析der文件_java-如何读取也用bouncycastle在DER中编码的PK...

    我已经尝试过以下问题的答案: 但是由于我调用时我的加密密钥已编码为DER Object object = pemParser.readObject(); 对象为null. 我可以使用openssl的命 ...

  8. C语言解析pcap文件得到HTTP信息实例(原创,附源码)

    原文:http://xiexiaohui.com.host2.ugocn.com/index.php/archives/34 转载请注明出处.来自 hello xiexh (xiexiaohui092 ...

  9. java解析csv文件写入mysql_java读取cvs文件并导入数据库

    本文实例为大家分享了java读取cvs文件并导入数据库的具体代码,供大家参考,具体内容如下 首先获取文件夹下面的所有类型相同的excel,可以用模糊匹配contains("匹配字段" ...

最新文章

  1. 三星 arm9 linux,基于arm9内核三星s3c2410平台下linux四键按键驱动程序
  2. 多面体的顶点方向以及分解定理以及多胞形凸组合
  3. IDEA VS 快捷键 大全
  4. 常见问题—打包压缩问题
  5. 【00】设计模式概要
  6. 树莓派 Ubuntu mate 18.04 下开启vncserver
  7. 全球及中国皮裤行业消费需求及未来产销前景预测报告2022-2027年
  8. Microsoft Teams的Meet Now功能
  9. 【操作系统复习】进程的定义、组成、组织方式
  10. 阿里云 redis mysql_Redis 和 MySQL数据一致
  11. 依赖反转原理,IoC容器和依赖注入:第5部分
  12. Android Activity和Fragment的生命周期图
  13. java infinity 处理_Java:如何执行向-Infinity而不是0的整数除法?
  14. SWMM面板基础认识
  15. Tom猫爱吃喝_Python面向对象“又“入门
  16. nslookup查询域名系统服务器,域名解析系统DNS诊断命令nslookup详解
  17. 计算各位数字的平方和
  18. 都是行业盛宴,AWE和CES等展会到底有啥不一样?
  19. RDKit | 子结构搜索和MCS算法
  20. 【数智化案例展】浙江电信——数据中台与BI技术助力通信行业驱动高质量数据价值的流通闭环...

热门文章

  1. 一文看懂 TensorFlow 2.x / keras 安装与GPU支持
  2. 10.1寸工业三防平板应用于工业自动化生产
  3. 【webrtc视频会议的搭建】端到端(E2EE)的加密
  4. “远程计算机或设备将不接受连接”的解决办法
  5. 一篇超详细的vue项目前端自动化测试教学!
  6. 夜光祝愿大家 520 快乐
  7. java json keyset_Java JsonObject.keySet方法代码示例
  8. 云计算学习入门:云计算基础服务组件讲解
  9. linux 进程及调度基础知识
  10. 在人员数多的工厂适合应用人脸识别测温一体机吗?