在C++中,Base64编解码通常不是标准库直接支持的功能,但你可以使用一些流行的第三方库,如OpenSSL或Boost,来实现这一功能。然而,为了简洁起见,这里我提供一个基于纯C++的Base64编解码示例,不依赖任何外部库。
**注意**:以下示例代码是为了教学目的而编写的,可能不是最高效或最安全的实现方式,但它展示了Base64编解码的基本原理。
### Base64 编码示例
#include <iostream>
#include <string>
#include <vector>
std::string base64_encode(const std::string& input) {
static const std::string base64_chars =
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz"
"0123456789+/";
std::string ret;
int val = 0;
int valb = -6;
for (unsigned char c : input) {
val = (val << 8) + c;
valb += 8;
while (valb >= 0) {
ret.push_back(base64_chars[(val >> valb) & 0x3F]);
valb -= 6;
}
}
if (valb > -6) {
ret.push_back('=');
if (valb > -4) ret.push_back('=');
}
return ret;
}
// 使用示例
int main() {
std::string input = "Hello, World!";
std::string encoded = base64_encode(input);
std::cout << "Encoded: " << encoded << std::endl;
return 0;
}
### Base64 解码示例
#include <iostream>
#include <string>
#include <vector>
std::string base64_decode(std::string const& encoded) {
static const std::string base64_chars =
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz"
"0123456789+/";
std::string ret;
int val = 0;
int valb = -8;
for (unsigned char c : encoded) {
if (c == '=')
break;
val = (val << 6) | base64_chars.find(c);
valb += 6;
if (valb >= 0) {
ret.push_back(char((val >> valb) & 0xFF));
valb -= 8;
}
}
return ret;
}
// 使用示例
int main() {
std::string encoded = "SGVsbG8sIFdvcmxkIQ=="; // 编码后的 "Hello, World!"
std::string decoded = base64_decode(encoded);
std::cout << "Decoded: " << decoded << std::endl;
return 0;
}
这两个示例提供了Base64编解码的基本框架。你可以根据自己的需求修改和扩展这些代码。