C++ 实现多个 char* 的按位异或操作
以下是一个示例代码,可以实现多个 char* 做按位异或操作:
#include <iostream>
#include <cstring>
char* XOR(char* s1, char* s2)
{
int len1 = strlen(s1);
int len2 = strlen(s2);
if (len1 != len2) return NULL;
char* res = new char[len1 + 1];
for (int i = 0; i < len1; i++) {
res[i] = s1[i] ^ s2[i];
}
res[len1] = '\0';
return res;
}
char* XOR(char* s1, char* s2, char* s3)
{
char* res1 = XOR(s1, s2);
char* res2 = XOR(res1, s3);
delete[] res1;
return res2;
}
int main()
{
char* s1 = 'abcd';
char* s2 = 'efgh';
char* s3 = 'ijkl';
char* res = XOR(s1, s2, s3);
std::cout << res << std::endl;
delete[] res;
return 0;
}
在这个示例代码中,我们首先定义了一个 XOR 函数,用于计算两个 char* 的按位异或结果。然后,我们又定义了一个 XOR 函数,用于计算三个 char* 的按位异或结果。在这个函数中,我们首先调用 XOR 函数计算前两个 char* 的异或结果,然后再将这个结果与第三个 char* 做异或操作。最后,我们在 main 函数中测试了这个 XOR 函数的使用,将三个 char* 做异或操作,并打印出结果。
需要注意的是,在使用完动态分配的内存后,我们需要使用 delete[] 释放这些内存,以避免内存泄漏。
原文地址: https://www.cveoy.top/t/topic/g0IO 著作权归作者所有。请勿转载和采集!