Библиотека форматирования C++ — быстрая и типобезопасная альтернатива C stdio и iostreams с поддержкой C++20 std::format.
fastfloat/fast_float
Header-only библиотека C++ для быстрого и точного разбора строк в float, double и целые числа; drop-in-реализация from_chars.
- Звёзды
- 2,134
- Форки
- 200
- Открытые issues
- 29
- Последний коммит
- 5 дней назад
Что это?
fast_float — header-only библиотека C++, реализующая функции from_chars в стиле C++17 для типов float, double и целых чисел. Она преобразует десятичные строки ASCII, например "1.3e10", в двоичные числа с точным округлением по IEEE, включая округление к ближайшему чётному. Реализация не генерирует исключений и не выделяет память.
Помимо стандартного интерфейса библиотека позволяет задавать собственный разделитель дробной части, поддерживает числа в стиле Fortran и строгие грамматики JSON и JavaScript. Она также принимает данные в UTF-16 и UTF-32, поддерживает типы float фиксированной ширины и может использоваться на этапе компиляции в C++20.
Проект рассчитан на C++11 и работает с Visual Studio, macOS, Linux и FreeBSD на 32- и 64-разрядных системах с прямым и обратным порядком байтов. Его можно подключить через CMake, CPM, Conan, Homebrew или как файл с единственным заголовком.
Ключевые возможности
- 01Разбирает float и double с точным округлением к ближайшему чётному.
- 02Разбирает знаковые и беззнаковые целые числа в системах счисления, например, с основаниями 2, 10 и 16.
- 03Сообщает об ошибках через std::errc, не генерируя исключений и не выделяя память.
- 04Поддерживает грамматики JSON, JavaScript и Fortran, а также грамматики с пользовательским разделителем дробной части.
- 05Принимает данные в ASCII, UTF-8, UTF-16 и UTF-32.
- 06Подключается как header-only библиотека или как файл с единственным заголовком.
Сценарии использования
- Разбор больших объёмов числового текста в движках баз данных и конвейерах обработки данных.
- Чтение чисел в парсерах JSON или JavaScript, которым необходима строгая проверка грамматики.
- Добавление быстрого преобразования чисел в проекты на C++ с версией C++11 или новее.
- Разбор чисел в CSV-файлах или логах, когда важна скорость.
Быстрый старт
- 1
Скопируйте каталог fast_float в путь include вашего проекта и подключите заголовочный файл
Что важно знать
- Поддерживается только десятичный ввод; шестнадцатеричные строки не разбираются.
- Тип long double не поддерживается.
- Предполагается, что режим округления чисел с плавающей точкой установлен на округление к ближайшему.
Темы
Частые вопросы
- Что такое fast_float?
- Header-only библиотека C++ для быстрого и точного разбора строк в float, double и целые числа; drop-in-реализация from_chars. fast_float — header-only библиотека C++, реализующая функции from_chars в стиле C++17 для типов float, double и целых чисел. Она преобразует десятичные строки ASCII, например "1.3e10", в двоичные числа с точным округлением по IEEE, включая округление к ближайшему чётному. Реализация не генерирует исключений и не выделяет память.
- fast_float можно использовать бесплатно? Какая у него лицензия?
- fast_float распространяется с открытым исходным кодом под лицензией Apache-2.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- fast_float всё ещё поддерживается?
- Активно поддерживается. Последний коммит в fast_float — 19 окт. 2026 г..
- Для чего можно использовать fast_float?
- Разбор больших объёмов числового текста в движках баз данных и конвейерах обработки данных. Чтение чисел в парсерах JSON или JavaScript, которым необходима строгая проверка грамматики. Добавление быстрого преобразования чисел в проекты на C++ с версией C++11 или новее. Разбор чисел в CSV-файлах или логах, когда важна скорость.
- Как установить fast_float?
- Скопируйте каталог fast_float в путь include вашего проекта и подключите заголовочный файл
- Где скачать fast_float?
- Исходный код и инструкции по установке — на GitHub: https://github.com/fastfloat/fast_float
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Однофайловая библиотека на C++11 для создания HTTP/HTTPS-серверов и клиентов с блокирующим вводом-выводом через сокеты.
Быстрый микрофреймворк на C++ в стиле Flask для создания HTTP- и WebSocket-сервисов: header-only и простой в использовании.
Header-only библиотека на C++ с быстрыми и экономичными по памяти хеш-таблицами и B-деревьями — альтернативами контейнерам std.
Заголовочная C++14-библиотека с lock-free очередями на кольцевых буферах для обмена сообщениями между потоками с минимальной задержкой от push до pop.
Luanti (ранее Minetest) — бесплатный игровой движок с открытым исходным кодом для создания воксельных игр и игры в них с поддержкой модов на Lua.