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)。我们来看手动方式:
- 下载
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() { // 为文本创建纠错级别为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