Utilizando a fmtlib para saídas formatadas em C++

Em testes realizados o fmt foi cerca de 35% mais rápido que o printf do C e o std::cout do C++ .


Utilizando a fmtlib para saídas formatadas em C++

{fmt} é uma biblioteca de formatação de código aberto que oferece uma alternativa rápida e segura para C stdio e C++ iostreams.

Recursos

  • API de formato simples com argumentos posicionais para localização
  • Implementação de C++20 std::format
  • Sintaxe de string de formato semelhante ao formato do Python
  • Formatador de ponto flutuante IEEE 754 rápido com arredondamento correto, curto e garantias de ida e volta
  • E entre diversos outros.


Instalação

Dependências:

Depois basta clonar, compilar e instalar com os comandos abaixo:

git clone https://github.com/fmtlib/fmt
cd fmt
cmake -B build .
cd build
make
sudo make install
Caminho da instalação dos arquivos ```bash Install the project... -- Install configuration: "Release" -- Installing: /usr/local/lib64/libfmt.a -- Installing: /usr/local/include/fmt/args.h -- Installing: /usr/local/include/fmt/chrono.h -- Installing: /usr/local/include/fmt/color.h -- Installing: /usr/local/include/fmt/compile.h -- Installing: /usr/local/include/fmt/core.h -- Installing: /usr/local/include/fmt/format.h -- Installing: /usr/local/include/fmt/format-inl.h -- Installing: /usr/local/include/fmt/os.h -- Installing: /usr/local/include/fmt/ostream.h -- Installing: /usr/local/include/fmt/printf.h -- Installing: /usr/local/include/fmt/ranges.h -- Installing: /usr/local/include/fmt/std.h -- Installing: /usr/local/include/fmt/xchar.h -- Installing: /usr/local/lib64/cmake/fmt/fmt-config.cmake -- Installing: /usr/local/lib64/cmake/fmt/fmt-config-version.cmake -- Old export file "/usr/local/lib64/cmake/fmt/fmt-targets.cmake" will be replaced. Removing files [/usr/local/lib64/cmake/fmt/fmt-targets-release.cmake]. -- Installing: /usr/local/lib64/cmake/fmt/fmt-targets.cmake -- Installing: /usr/local/lib64/cmake/fmt/fmt-targets-release.cmake -- Installing: /usr/local/lib64/pkgconfig/fmt.pc ```

Exemplos de uso

Uso básico:

#include <fmt/core.h>

int main() {
  fmt::print("A resposta é {}.\n", 42);
}

Para compilar use a flag -lfmt:

g++ -I/usr/local/include/benchmark/ -lfmt main.cpp

Atribuindo saída formatada à uma string:

#include <fmt/core.h>

int main() {
  std::string s = fmt::format("A resposta é {}.\n", 42);
  fmt::print("{}", s);
}

Utilizando argumentos posicionais:

#include <fmt/core.h>

int main() {
  std::string s = fmt::format("Eu {1} amar {0} o {2}!\n", "demais", "\u2764", "C++");
  fmt::print("{}", s);
}

Imprimindo informações cronológicas:

#include <fmt/chrono.h>

int main() {
  using namespace std::literals::chrono_literals;
  fmt::print("Saída padrão: {} {}\n", 42s, 100ms);
  fmt::print("Saída formatada: {:%H:%M:%S}\n", 3h + 15min + 30s);
}

Saída com cores:

#include <fmt/color.h>

int main() {
  fmt::print(fg(fmt::color::crimson) | fmt::emphasis::bold,
             "Olá, {}!\n", "Mundo");
}


Para mais exemplos consulte a documentação e o repositório .


cpp linguagemc


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!