توليد رموز QR بلغة C++: مكتبة QR-Code-generator

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مكتبة QR-Code-generator للغة C++: دليل كامل

\n\n

أصبحت رموز QR جزءًا لا يتجزأ من العالم الرقمي الحديث. تُستخدم في الإعلانات، والخدمات اللوجستية، وأنظمة الدفع، وحتى في المشاريع التعليمية. إذا كنت تطور تطبيقًا بلغة C++ وتريد إضافة وظيفة توليد رموز QR، فإن مكتبة QR-Code-generator هي أداة بسيطة وخفيفة وفعالة. في هذه المقالة، سنشرح بالتفصيل ما هي هذه المكتبة، وكيفية تثبيتها، وسنعرض أمثلة عملية للكود.

\n\n

ما هي QR-Code-generator؟

\n

QR-Code-generator هي مكتبة متعددة المنصات بلغة C++ (متاحة أيضًا بلغات C وPython وJava)، تتيح لك إنشاء رموز QR بإصدارات مختلفة ومستويات تصحيح أخطاء متنوعة. المزايا الرئيسية:

\n
    \n
  • لا تتطلب تبعيات خارجية (تعمل "مباشرة من الصندوق").
  • \n
  • تدعم جميع الإصدارات الأربعين لرموز QR (من 21×21 إلى 177×177 وحدة).
  • \n
  • مستويات تصحيح الأخطاء: L (7%)، M (15%)، Q (25%)، H (30%).
  • \n
  • الإخراج كسلسلة نصية (char*) أو مصفوفة ثنائية.
  • \n
  • دعم Unicode (UTF-8) والأوضاع الرقمية/الأبجدية.
  • \n
\n

المكتبة مثالية للتضمين في تطبيقات الخادم، أو أدوات سطر الأوامر، أو المشاريع التعليمية بلغة C++.

\n\n

التثبيت والتضمين

\n

عملية التثبيت بسيطة للغاية. يمكنك تنزيل الملفات المصدرية من مستودع Nayuki على GitHub أو استخدام مدير الحزم (مثل vcpkg). دعنا نستعرض الطريقة اليدوية:

\n
    \n
  1. قم بتنزيل الملفين qrcodegen.hpp و qrcodegen.cpp.
  2. \n
  3. ضعهما في مجلد مشروعك.
  4. \n
  5. قم بتضمين ملف الرأس في الكود: #include "qrcodegen.hpp".
  6. \n
  7. قم بتجميع المشروع باستخدام العلم -std=c++11 أو إصدار أحدث.
  8. \n
\n

مثال على التجميع باستخدام g++:

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

وظائف API الأساسية

\n

توفر المكتبة واجهة برمجة تطبيقات (API) بسيطة ولكنها قوية. الوظائف الرئيسية:

\n
    \n
  • qrcodegen::QrCode::encodeText(text, ecl) — لتشفير سلسلة نصية إلى رمز QR بمستوى تصحيح محدد.
  • \n
  • qrcodegen::QrCode::encodeBinary(data, ecl) — لتشفير البيانات الثنائية.
  • \n
  • getSize() — لإرجاع حجم رمز QR (عدد الوحدات في العرض).
  • \n
  • getModule(x, y) — للتحقق مما إذا كانت الوحدة (البكسل) مضبوطة عند الإحداثيات (x, y).
  • \n
\n\n

مثال 1: توليد رمز QR وعرضه في وحدة التحكم

\n

أبسط مثال هو إنشاء رمز QR لسلسلة نصية وعرضه كرسومات ASCII. هذا الكود مفيد لتصحيح الأخطاء أو العرض التوضيحي في الطرفية.

\n
#include <iostream>\n#include <string>\n#include "qrcodegen.hpp"\n\nusing namespace std;\nusing namespace qrcodegen;\n\nint main() {\n    // إنشاء رمز QR للنص بمستوى تصحيح H (30%)\n    const QrCode qr = QrCode::encodeText("https://pythonlib.ru", QrCode::Ecc::HIGH);\n    \n    // عرض رمز QR في وحدة التحكم (رموز █ ومسافة)\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

النتيجة: سيتم عرض رمز QR في وحدة التحكم يمكن مسحه ضوئيًا بواسطة أي هاتف ذكي. المستوى H يوفر أقصى مقاومة للتلف.

\n\n

مثال 2: إنشاء رمز QR ببيانات ثنائية

\n

أحيانًا تحتاج إلى تشفير ليس نصًا، بل بايتات عشوائية (مثل البيانات المسلسلة). استخدم encodeBinary.

\n
#include <vector>\n#include "qrcodegen.hpp"\n\nusing namespace qrcodegen;\n\nint main() {\n    // تحضير البيانات الثنائية (مصفوفة بايت)\n    std::vector<uint8                    

توصيات