Generierung von QR-Codes in C++: Bibliothek QR-Code-generator

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Bibliothek QR-Code-generator für C++: Vollständige Anleitung

\n\n

QR-Codes sind zu einem unverzichtbaren Bestandteil der modernen digitalen Welt geworden. Sie werden in der Werbung, Logistik, Zahlungssystemen und sogar in Bildungsprojekten eingesetzt. Wenn Sie eine Anwendung in C++ entwickeln und die Funktionalität zur Generierung von QR-Codes hinzufügen möchten, ist die Bibliothek QR-Code-generator ein einfaches, leichtes und effizientes Werkzeug. In diesem Artikel werden wir im Detail besprechen, was diese Bibliothek ist, wie man sie installiert und zeigen funktionierende Codebeispiele.

\n\n

Was ist QR-Code-generator?

\n

QR-Code-generator ist eine plattformübergreifende Bibliothek in C++ (auch verfügbar in C, Python, Java), die es ermöglicht, QR-Codes verschiedener Versionen und Fehlerkorrekturstufen zu erstellen. Die Hauptvorteile:

\n
    \n
  • Benötigt keine externen Abhängigkeiten (funktioniert „out of the box“).
  • \n
  • Unterstützt alle 40 Versionen von QR-Codes (von 21×21 bis 177×177 Modulen).
  • \n
  • Fehlerkorrekturstufen: L (7%), M (15%), Q (25%), H (30%).
  • \n
  • Ausgabe als Zeichenkette (char*) oder binäres Array.
  • \n
  • Unterstützung von Unicode (UTF-8) und numerischen/alphabetischen Modi.
  • \n
\n

Die Bibliothek eignet sich ideal für die Einbettung in Serveranwendungen, Kommandozeilen-Dienstprogramme oder Bildungsprojekte in C++.

\n\n

Installation und Einbindung

\n

Die Installation ist denkbar einfach. Sie können die Quelltexte aus dem GitHub-Repository von Nayuki herunterladen oder einen Paketmanager (z. B. vcpkg) verwenden. Betrachten wir die manuelle Methode:

\n
    \n
  1. Laden Sie die Dateien qrcodegen.hpp und qrcodegen.cpp herunter.
  2. \n
  3. Platzieren Sie sie im Ordner Ihres Projekts.
  4. \n
  5. Binden Sie die Header-Datei im Code ein: #include "qrcodegen.hpp".
  6. \n
  7. Kompilieren Sie das Projekt mit dem Flag -std=c++11 oder höher.
  8. \n
\n

Beispiel für die Kompilierung mit g++:

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

Wichtige API-Funktionen

\n

Die Bibliothek bietet eine minimalistische, aber leistungsstarke API. Die wichtigsten Funktionen:

\n
    \n
  • qrcodegen::QrCode::encodeText(text, ecl) — kodiert eine Textzeichenkette in einen QR-Code mit der angegebenen Fehlerkorrekturstufe.
  • \n
  • qrcodegen::QrCode::encodeBinary(data, ecl) — kodiert binäre Daten.
  • \n
  • getSize() — gibt die Größe des QR-Codes zurück (Anzahl der Module in der Breite).
  • \n
  • getModule(x, y) — prüft, ob ein Modul (Pixel) an den Koordinaten (x, y) gesetzt ist.
  • \n
\n\n

Beispiel 1: QR-Code-Generierung und Ausgabe auf der Konsole

\n

Das einfachste Beispiel: Erstellen Sie einen QR-Code für eine Textzeichenkette und geben Sie ihn als ASCII-Grafik aus. Dieser Code ist nützlich für das Debugging oder die Demonstration im Terminal.

\n
#include <iostream>\n#include <string>\n#include "qrcodegen.hpp"\n\nusing namespace std;\nusing namespace qrcodegen;\n\nint main() {\n    // Erstellen eines QR-Codes für den Text mit Fehlerkorrekturstufe H (30%)\n    const QrCode qr = QrCode::encodeText("https://pythonlib.ru", QrCode::Ecc::HIGH);\n    \n    // Ausgabe des QR-Codes auf der Konsole (Zeichen █ und Leerzeichen)\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

Ergebnis: Auf der Konsole wird ein QR-Code angezeigt, der mit jedem Smartphone gescannt werden kann. Die Stufe H bietet maximale Widerstandsfähigkeit gegen Beschädigungen.

\n\n

Beispiel 2: Erstellen eines QR-Codes mit binären Daten

\n

Manchmal müssen nicht Texte, sondern beliebige Bytes (z. B. serialisierte Daten) kodiert werden. Verwenden Sie encodeBinary.

\n
#include <vector>\n#include "qrcodegen.hpp"\n\nusing namespace qrcodegen;\n\nint main() {\n    // Vorbereiten der binären Daten (Byte-Array)\n    std::vector<uint8                    

Empfehlungen