C++ QR码生成:QR-Code-generator库

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

C++ QR-Code-generator库:完整指南



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++教育项目中。



安装与配置

安装非常简单。您可以从Nayuki的GitHub仓库下载源代码,或使用包管理器(例如vcpkg)。我们来看手动方式:

  1. 下载 qrcodegen.hpp 和 qrcodegen.cpp 文件。
  2. 将它们放入您的项目文件夹中。
  3. 在代码中包含头文件:#include "qrcodegen.hpp"。
  4. 使用 -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() { // 为文本创建纠错级别为H (30%)的QR码 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

推荐