C++ 实现两个 char* 字符串按位异或操作
以下是 C++ 实现两个 char* 做按位异或操作的示例代码:
#include <iostream>
#include <cstring>
char* xorStrings(const char* str1, const char* str2) {
size_t len1 = strlen(str1);
size_t len2 = strlen(str2);
size_t len = (len1 < len2) ? len1 : len2; // 取两个字符串长度的最小值
char* result = new char[len + 1]; // 分配结果字符串的内存空间
result[len] = '\0'; // 结果字符串以'\0'结尾
for (size_t i = 0; i < len; ++i) {
result[i] = str1[i] ^ str2[i]; // 按位异或操作
}
return result;
}
int main() {
char* str1 = "hello";
char* str2 = "world";
char* result = xorStrings(str1, str2);
std::cout << result << std::endl; // 输出结果字符串
delete[] result; // 释放结果字符串的内存空间
return 0;
}
该程序定义了一个函数 xorStrings,接受两个 const char* 类型的参数 str1 和 str2,并返回一个 char* 类型的结果字符串。函数首先计算出两个字符串的长度的最小值,然后分配一个内存空间用于存储结果字符串,并在最后一个字符处添加一个 '\0'。接下来,函数使用一个循环遍历两个字符串的每个字符,并对它们进行按位异或操作,将结果存储在结果字符串中。最后,函数返回结果字符串的指针。
在 main 函数中,程序定义了两个字符串 str1 和 str2,并调用 xorStrings 函数对它们进行按位异或操作,将结果存储在 result 指针中。然后,程序输出结果字符串并释放结果字符串的内存空间。
原文地址: https://www.cveoy.top/t/topic/g0Ee 著作权归作者所有。请勿转载和采集!