Uma biblioteca de formatação para C++ que oferece uma alternativa rápida e segura quanto aos tipos a C stdio e iostreams, implementando std::format do C++20.
fastfloat/fast_float
Biblioteca C++ header-only para parsing rápido e exato de valores float, double e inteiros a partir de strings, com uma implementação substituta de from_chars.
- Estrelas
- 2,134
- Forks
- 200
- Issues abertas
- 29
- Último commit
- há 5 dias
O que é?
fast_float é uma biblioteca C++ header-only que implementa as funções from_chars no estilo do C++17 para tipos float, double e inteiros. Ela converte strings decimais ASCII, como "1.3e10", em números binários com arredondamento IEEE exato, incluindo arredondamento para o par. A implementação não lança exceções nem aloca memória.
Além da interface padrão, a biblioteca oferece opções para separador decimal personalizado, números no estilo Fortran e gramáticas estritas de JSON ou JavaScript. Ela também aceita entradas UTF-16 e UTF-32, oferece suporte a tipos float de largura fixa e pode ser usada em tempo de compilação no C++20.
O projeto tem como alvo o C++11 e pode ser usado com Visual Studio, macOS, Linux e FreeBSD, em sistemas de 32 ou 64 bits, big-endian ou little-endian. Ele pode ser adicionado via CMake, CPM, Conan, Homebrew ou como um único arquivo de header.
Recursos principais
- 01Faz o parsing de float e double com resultados exatos usando arredondamento para o mais próximo, com desempate para o par.
- 02Faz o parsing de tipos inteiros com e sem sinal em bases como 2, 10 e 16.
- 03Informa erros por meio de std::errc, sem lançar exceções nem alocar memória.
- 04Oferece gramáticas de JSON, JavaScript, Fortran e separador decimal personalizado.
- 05Aceita entradas ASCII, UTF-8, UTF-16 e UTF-32.
- 06Pode ser usada como biblioteca header-only ou como um único arquivo de header.
Casos de uso
- Fazer o parsing de grandes volumes de texto numérico em mecanismos de banco de dados ou pipelines de dados.
- Ler números em parsers de JSON ou JavaScript que precisam verificar gramáticas estritas.
- Adicionar conversão numérica rápida a projetos C++ que tenham como alvo o C++11 ou versões posteriores.
- Fazer o parsing de números em arquivos CSV ou de log quando a velocidade é importante.
Início rápido
- 1
Copie o diretório fast_float para o caminho include do seu projeto e inclua o cabeçalho
Antes de usar
- Apenas entradas decimais são aceitas; strings hexadecimais não são analisadas.
- O tipo long double não é compatível.
- Parte-se do pressuposto de que o modo de arredondamento de ponto flutuante está definido como arredondamento para o mais próximo.
Tópicos
Perguntas frequentes
- O que é fast_float?
- Biblioteca C++ header-only para parsing rápido e exato de valores float, double e inteiros a partir de strings, com uma implementação substituta de from_chars. fast_float é uma biblioteca C++ header-only que implementa as funções from_chars no estilo do C++17 para tipos float, double e inteiros. Ela converte strings decimais ASCII, como "1.3e10", em números binários com arredondamento IEEE exato, incluindo arredondamento para o par. A implementação não lança exceções nem aloca memória.
- fast_float é gratuito? Qual é a licença?
- fast_float é open source sob a licença Apache-2.0. Confira os termos da licença antes de usá-lo em produtos comerciais.
- fast_float ainda é mantido?
- Manutenção ativa. O último commit de fast_float foi em 19 de out. de 2026.
- Para que posso usar fast_float?
- Fazer o parsing de grandes volumes de texto numérico em mecanismos de banco de dados ou pipelines de dados. Ler números em parsers de JSON ou JavaScript que precisam verificar gramáticas estritas. Adicionar conversão numérica rápida a projetos C++ que tenham como alvo o C++11 ou versões posteriores. Fazer o parsing de números em arquivos CSV ou de log quando a velocidade é importante.
- Como instalar fast_float?
- Copie o diretório fast_float para o caminho include do seu projeto e inclua o cabeçalho
- Onde consigo fast_float?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/fastfloat/fast_float
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
Uma biblioteca C++11 em um único header para criar servidores e clientes HTTP/HTTPS com I/O de socket bloqueante.
Um microframework C++ rápido, no estilo do Flask, para criar serviços web HTTP e WebSocket, distribuído como header-only e fácil de usar.
Biblioteca C++ header-only de mapas hash, conjuntos e contêineres B-tree rápidos e econômicos em memória, que substituem os contêineres padrão da STL.
Filas ring buffer lock-free de C++14, em header-only, para troca de mensagens entre threads com latência mínima entre push e pop.
Luanti (antigo Minetest) é uma engine de jogos voxel gratuita e de código aberto para criar e jogar games com mods em Lua.