首页 > 编程语言 >关于c++使用toml plusplus(俗称toml++)的使用

关于c++使用toml plusplus(俗称toml++)的使用

时间:2024-08-18 22:38:10浏览次数:13  
标签:string plusplus c++ ++ rootNode key toml oct

链接

toml读取

toml写入

  • 一个范例,一个开胃菜

toml文件

  • 待生成的目标文件内容为
[NET_INTERFACE]
bool = false
integer = 1234567890
string = 'this is a string'

关键代码

  • toml.h头文件的代码
/// ----------------------------------------------------
/// @file toml.h
/// @author oct ([email protected])
/// @brief toml中常用的一些函数的转换
/// @version 0.1
/// @date 2024-08-12
/// 
/// @copyright Copyright (c) 2024
/// 
/// ----------------------------------------------------

#ifndef TOML_H_
#define TOML_H_
#include <string>
#include <toml.hpp>

namespace oct 
{
    /// @brief 插入非string节点
    /// @param whichTable -哪个表
    /// @param key - 插入的数据值
    /// @param value -值
    template<typename T>
    static void tableNodeInsert(toml::table& whichTable, const std::string& key, const T& value)
    {
        whichTable.insert_or_assign(key, toml::value<T>(value));
    }
}

#endif ///! TOML_H_

写文件关键代码

/// 定义了表的一些键的名称
NetInterfaceConfigPropertyName propertyName;

toml::table rootNode{};
/// 参数1-哪个表,参数2-节点的key, 参数3-将要插入的值
tableNodeInsert<std::string>(rootNode, "string", "this is a string");
tableNodeInsert<bool>(rootNode, "bool", false);
tableNodeInsert<int64_t>(rootNode, "integer", 1234567890);

toml::table netInterfaceNode{};
/// 创建[NET_INTERFACE]
netInterfaceNode.insert_or_assign(propertyName.m_tableName, rootNode);

/// 使用流打开文件
std::ofstream tomlFile(globalToml.toLocal8Bit().toStdString(), std::ios::out | std::ios::trunc);
if (tomlFile.is_open())
{
	// 使用 toml++ 的内置方法将 TOML 值写入文件
	tomlFile << netInterfaceNode;
	tomlFile.close();
}
else
{
	std::cout << "failed to write file";
	return 2;
}

标签:string,plusplus,c++,++,rootNode,key,toml,oct
From: https://www.cnblogs.com/pandamohist/p/18366194

相关文章

  • 【C++学习笔记 18】C++中的隐式构造函数
    举个例子#include<iostream>#include<string>usingString=std::string;classEntity{private: Stringm_Name; intm_Age;public: Entity(constString&name) :m_Name(name),m_Age(-1){} Entity(intage) :m_Name("UnKnown")......
  • C/C++内存管理
    一、目标1.C/C++内存分布2.C语言中动态内存管理方式3.C++中动态内存管理4.operatornew与operatordelete函数5.new和delete的实现原理6.常见面试题二、个人见解1.C/C++内存分布【说明】1.栈又叫堆栈--非静态局部变......
  • c++ 获取文件夹目录名字
        main.cpp#ifndefPHOTO_FILE_PROCESSOR_H#definePHOTO_FILE_PROCESSOR_H#include<iostream>#include<string>#include<vector>#include<dirent.h>#include<algorithm>#include<stdexcept>classPhotoFilePro......
  • C++ 设计模式——建造者模式
    建造者模式建造者模式组成部分建造者模式使用步骤1.定义产品类2.创建具体产品类3.创建建造者接口4.实现具体建造者5.创建指挥者类6.客户端代码建造者模式UML图建造者模式UML图解析建造者模式的优缺点建造者模式的适用场景完整代码建造者模式建造者模式(B......
  • typedef在C/C++的用法
    typedef是C和C++中的一个关键字,用于为已有的数据类型创建新的类型名。它的主要用途如下:1.定义别名typedef最基本的功能是为一个现有的类型定义一个别名,使代码更简洁或更具可读性。例如:typedefunsignedlongulong;ulonga,b;这段代码将unsignedlong类型重......
  • extern在头文件中添加是否必要?(C/C++)
    在C和C++编程中,extern关键字通常用于表示函数或变量的声明(而非定义),特别是在跨文件使用时。尽管在函数声明中使用extern不是强制性的,但它有特定的作用,尤其在变量声明方面。让我们深入探讨一下。1.函数声明的基本概念当你在头文件中声明一个函数时,通常只需要提供函......
  • C++STL string简单实现
    文章目录前言string接口介绍构造函数迭代器常用容量操作元素访问操作常用操作string简单实现框架构造/析构函数迭代器操作符重载[]+=重载流插入/提取操作符重载常用操作插入删除前言    std::string是C++标准模板库中的一个类,用于处理字符串。与C语言的字符......
  • c++--基础语法
    frompixiv参考博客ChatgptC++基础-知识点修饰符const在C++中,const关键字用于定义不可修改的变量、指针、函数参数和返回值等。它可以增强代码的安全性和可读性,防止意外修改数据。1.常量变量使用const定义的变量是不可更改的常量。一旦赋值,就不能再修改。cons......
  • Qt/C++地图标注点的添加删除移动旋转/指定不同图标和动图/拿到单击信号
    一、前言说明标注点在地图开发中是最常见的应用场景之一,比如在地图上需要显示设备的位置,基本上都是添加标注点,指定图片和尺寸已经经纬度坐标位置。这个功能在每种地图内核中都提供的,这个并没有任何难点,在这个功能点上最大难题或者说是设计细节就是,标注点该如何对齐,比如水滴形状的......
  • C++学习第二课
    一、C++数据类型使用编程语言进行编程时,我们需要用到各种变量来存储各种信息,变量保留的时他所存储的值的内存位置,这意味着,你创建一个变量时,就会在内存中保留一些空间。在我们的编程中我们一般需要的数据类型有比如字符型、宽字符型、整型、浮点型、双浮点型、布尔型等,操作系......