toml++ para C++: guia completo com exemplos práticos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

toml++ para C++: guia completo com exemplos práticos

1. O que é e para que serve

TOML (Tom's Obvious Minimal Language) é um formato de arquivos de configuração criado como alternativa ao INI, YAML e JSON. Ele foi projetado para ser altamente legível para humanos, mapear diretamente para tabelas hash e ser simples de fazer parsing. Ao contrário do YAML, o TOML não permite ambiguidades (como indentação ou tipos de dados), e ao contrário do JSON, não exige aspas nas chaves e suporta comentários.

toml++ (também conhecido como tomlplusplus) é uma biblioteca moderna, header-only (somente cabeçalhos) para parsing e geração de arquivos TOML em C++17 ou superior. Ela não requer compilação separada: basta incluir o arquivo de cabeçalho e você tem acesso a todas as funcionalidades. Isso a torna ideal para projetos que priorizam simplicidade de integração, performance e tipagem forte.

Por que usar toml++? Primeiro, ela oferece suporte completo à especificação TOML v1.0, incluindo tabelas inline, arrays de tabelas, datas, horários e datas locais. Segundo, ela foi desenvolvida com foco em segurança de tipos: você obtém valores fortemente tipados (std::string, int64_t, double, bool, toml::date, etc.), e não um objeto genérico estilo JSON. Terceiro, ela é extremamente rápida e tem dependências mínimas (apenas a biblioteca padrão do C++17).

2. Instalação

toml++ é uma biblioteca header-only. Isso significa que você não precisa compilá-la separadamente. Basta copiar os arquivos de cabeçalho para o seu projeto e incluí-los.

Método 1: Vcpkg (recomendado para Windows e Linux)

# Instalação via vcpkg
vcpkg install tomlplusplus

# Inclusão no CMakeLists.txt
find_package(tomlplusplus CONFIG REQUIRED)
target_link_libraries(meu_projeto PRIVATE tomlplusplus::tomlplusplus)

Método 2: Conan

# Instalação via Conan
conan install tomlplusplus/3.4.0@

# No conanfile.txt
[requires]
tomlplusplus/3.4.0

[generators]
CMakeDeps

Método 3: Instalação manual (mais simples)

# Baixe a versão mais recente do GitHub
wget https://github.com/marzer/tomlplusplus/archive/refs/tags/v3.4.0.tar.gz
tar -xzf v3.4.0.tar.gz

# Copie a pasta include/toml++ para o seu projeto
cp -r tomlplusplus-3.4.0/include/toml++ /caminho/do/seu/projeto/include/

# No seu código, basta incluir:
#include <toml++/toml.h>

Método 4: CMake FetchContent (para projetos CMake)

include(FetchContent)
FetchContent_Declare(
    tomlplusplus
    GIT_REPOSITORY https://github.com/marzer/tomlplusplus.git
    GIT_TAG v3.4.0
)
FetchContent_MakeAvailable(tomlplusplus)

target_link_libraries(meu_projeto PRIVATE tomlplusplus::tomlplusplus)

3. Primeiros passos — exemplo mínimo funcional

Crie um arquivo config.toml:

# config.toml
titulo = "Exemplo de configuração"

[servidor]
host = "localhost"
porta = 8080
debug = true

[banco]
nome = "meubd"
usuario = "admin"
senha = "segredo123"

Agora, escreva o código C++ para ler o arquivo:

#include <toml++/toml.h>
#include <iostream>
#include <filesystem>

int main() {
    // 1. Faz o parsing do arquivo
    auto config = toml::parse_file("config.toml");

    // 2. Lê valores simples
    std::string titulo = config["titulo"].value_or("padrao");
    std::cout << "Título: " << titulo << std::endl;

    // 3. Lê tabelas aninhadas
    auto servidor = config["servidor"];
    std::string host = servidor["host"].value_or("localhost");
    int porta = servidor["porta"].value_or(3000);
    bool debug = servidor["debug"].value_or(false);

    std::cout << "Servidor: " << host << ":" << porta << std::endl;
    std::cout << "Debug: " << (debug ? "ativado" : "desativado") << std::endl;

    return 0;
}

Recommendations