Библиотека QR-Code-generator для C++: полное руководство
QR-коды стали неотъемлемой частью современного цифрового мира. Они используются в рекламе, логистике, платежных системах и даже в образовательных проектах. Если вы разрабатываете приложение на C++ и хотите добавить функционал генерации QR-кодов, библиотека QR-Code-generator — это простой, легкий и эффективный инструмент. В этой статье мы подробно разберем, что это за библиотека, как её установить, и покажем рабочие примеры кода.
Что такое QR-Code-generator?
QR-Code-generator — это кроссплатформенная библиотека на C++ (также доступна на C, Python, Java), которая позволяет создавать QR-коды различных версий и уровней коррекции ошибок. Основные преимущества:
- Не требует внешних зависимостей (работает «из коробки»).
- Поддерживает все 40 версий QR-кодов (от 21×21 до 177×177 модулей).
- Уровни коррекции ошибок: L (7%), M (15%), Q (25%), H (30%).
- Вывод в виде строки (
char*) или бинарного массива. - Поддержка Unicode (UTF-8) и числовых/буквенных режимов.
Библиотека идеально подходит для встраивания в серверные приложения, утилиты командной строки или образовательные проекты на C++.
Установка и подключение
Установка максимально проста. Вы можете скачать исходники с GitHub-репозитория Nayuki или использовать менеджер пакетов (например, vcpkg). Рассмотрим ручной способ:
- Скачайте файлы
qrcodegen.hppиqrcodegen.cpp. - Поместите их в папку вашего проекта.
- Подключите заголовочный файл в коде:
#include "qrcodegen.hpp". - Скомпилируйте проект с флагом
-std=c++11или выше.
Пример компиляции через g++:
g++ -std=c++11 main.cpp qrcodegen.cpp -o qr_generator
Основные функции API
Библиотека предоставляет минималистичный, но мощный API. Основные функции:
qrcodegen::QrCode::encodeText(text, ecl)— кодирует строку текста в QR-код с заданным уровнем коррекции.qrcodegen::QrCode::encodeBinary(data, ecl)— кодирует бинарные данные.getSize()— возвращает размер QR-кода (количество модулей по ширине).getModule(x, y)— проверяет, установлен ли модуль (пиксель) в координатах (x, y).
Пример 1: Генерация QR-кода и вывод в консоль
Самый простой пример — создать QR-код для текстовой строки и вывести его в виде ASCII-графики. Этот код полезен для отладки или демонстрации в терминале.
#include <iostream>
#include <string>
#include "qrcodegen.hpp"
using namespace std;
using namespace qrcodegen;
int main() {
// Создаем QR-код для текста с уровнем коррекции H (30%)
const QrCode qr = QrCode::encodeText("https://pythonlib.ru", QrCode::Ecc::HIGH);
// Выводим QR-код в консоль (символы █ и пробел)
for (int y = 0; y < qr.getSize(); y++) {
for (int x = 0; x < qr.getSize(); x++) {
cout << (qr.getModule(x, y) ? "██" : " ");
}
cout << endl;
}
return 0;
}
Результат: В консоли отобразится QR-код, который можно отсканировать любым смартфоном. Уровень H обеспечивает максимальную устойчивость к повреждениям.
Пример 2: Создание QR-кода с бинарными данными
Иногда нужно закодировать не текст, а произвольные байты (например, сериализованные данные). Используйте encodeBinary.
#include <vector>
#include "qrcodegen.hpp"
using namespace qrcodegen;
int main() {
// Подготавливаем бинарные данные (массив байт)
std::vector<uint8 Также в библиотеке
Геолокация и карты в Swift для iOS/macOS: полное руководство
Работа с Apache Kafka в Java: полное руководство для разработчика
Геолокация и карты в Node.js: библиотеки для работы с картами
Машинное обучение на Go: библиотеки для Golang (ML, нейросети, NLP)
ts-jest для TypeScript: полное руководство с примерами