Génération de QR codes en C++ : bibliothèque QR-Code-generator

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Bibliothèque QR-Code-generator pour C++ : guide complet

\n\n

Les QR codes sont devenus une partie intégrante du monde numérique moderne. Ils sont utilisés dans la publicité, la logistique, les systèmes de paiement et même dans les projets éducatifs. Si vous développez une application en C++ et souhaitez ajouter des fonctionnalités de génération de QR codes, la bibliothèque QR-Code-generator est un outil simple, léger et efficace. Dans cet article, nous allons détailler ce qu'est cette bibliothèque, comment l'installer, et montrer des exemples de code fonctionnels.

\n\n

Qu'est-ce que QR-Code-generator ?

\n

QR-Code-generator est une bibliothèque multiplateforme en C++ (également disponible en C, Python, Java) qui permet de créer des QR codes de différentes versions et niveaux de correction d'erreurs. Principaux avantages :

\n
    \n
  • Aucune dépendance externe (fonctionne « prêt à l'emploi »).
  • \n
  • Prend en charge les 40 versions de QR codes (de 21×21 à 177×177 modules).
  • \n
  • Niveaux de correction d'erreurs : L (7 %), M (15 %), Q (25 %), H (30 %).
  • \n
  • Sortie sous forme de chaîne (char*) ou de tableau binaire.
  • \n
  • Prise en charge d'Unicode (UTF-8) et des modes numériques/alphabétiques.
  • \n
\n

La bibliothèque est idéale pour une intégration dans des applications serveur, des utilitaires en ligne de commande ou des projets éducatifs en C++.

\n\n

Installation et configuration

\n

L'installation est extrêmement simple. Vous pouvez télécharger les sources depuis le dépôt GitHub de Nayuki ou utiliser un gestionnaire de paquets (par exemple, vcpkg). Voici la méthode manuelle :

\n
    \n
  1. Téléchargez les fichiers qrcodegen.hpp et qrcodegen.cpp.
  2. \n
  3. Placez-les dans le dossier de votre projet.
  4. \n
  5. Incluez le fichier d'en-tête dans le code : #include "qrcodegen.hpp".
  6. \n
  7. Compilez le projet avec le flag -std=c++11 ou supérieur.
  8. \n
\n

Exemple de compilation avec g++ :

\n
g++ -std=c++11 main.cpp qrcodegen.cpp -o qr_generator
\n\n

Fonctions principales de l'API

\n

La bibliothèque fournit une API minimaliste mais puissante. Fonctions principales :

\n
    \n
  • qrcodegen::QrCode::encodeText(text, ecl) — encode une chaîne de texte en QR code avec le niveau de correction spécifié.
  • \n
  • qrcodegen::QrCode::encodeBinary(data, ecl) — encode des données binaires.
  • \n
  • getSize() — retourne la taille du QR code (nombre de modules en largeur).
  • \n
  • getModule(x, y) — vérifie si le module (pixel) aux coordonnées (x, y) est activé.
  • \n
\n\n

Exemple 1 : Génération d'un QR code et affichage dans la console

\n

L'exemple le plus simple est de créer un QR code pour une chaîne de texte et de l'afficher sous forme de graphique ASCII. Ce code est utile pour le débogage ou la démonstration dans un terminal.

\n
#include <iostream>\n#include <string>\n#include "qrcodegen.hpp"\n\nusing namespace std;\nusing namespace qrcodegen;\n\nint main() {\n    // Créer un QR code pour le texte avec le niveau de correction H (30%)\n    const QrCode qr = QrCode::encodeText("https://pythonlib.ru", QrCode::Ecc::HIGH);\n    \n    // Afficher le QR code dans la console (caractères █ et espace)\n    for (int y = 0; y < qr.getSize(); y++) {\n        for (int x = 0; x < qr.getSize(); x++) {\n            cout << (qr.getModule(x, y) ? "██" : "  ");\n        }\n        cout << endl;\n    }\n    return 0;\n}
\n

Résultat : La console affichera un QR code qui peut être scanné par n'importe quel smartphone. Le niveau H offre une résistance maximale aux dommages.

\n\n

Exemple 2 : Création d'un QR code avec des données binaires

\n

Parfois, il est nécessaire d'encoder non pas du texte, mais des octets arbitraires (par exemple, des données sérialisées). Utilisez encodeBinary.

\n
#include <vector>\n#include "qrcodegen.hpp"\n\nusing namespace qrcodegen;\n\nint main() {\n    // Préparer les données binaires (tableau d'octets)\n    std::vector<uint8                    

Recommendations