将一个三元组对象转换为一个二元组对象,三元组成员为:2个整形,一个字符指针。二元组成员:2个整形数据。将3元组的第3个成员用类型转换函数char *转换成普通字符指针进行输出。设计仿函数,将刚才转换成普通字符指针的字符数据进行加密操作,让每个字符变为其后第3个字符。
时间: 2024-06-10 13:10:19 浏览: 79
```cpp
#include <iostream>
#include <cstring>
using namespace std;
// 三元组类
class Triplet {
public:
Triplet(int a, int b, const char* c) : m_a(a), m_b(b), m_c(c) {}
int getFirst() const { return m_a; }
int getSecond() const { return m_b; }
const char* getThird() const { return m_c; }
private:
int m_a;
int m_b;
const char* m_c;
};
// 二元组类
class Pair {
public:
Pair(int a, int b) : m_a(a), m_b(b) {}
int getFirst() const { return m_a; }
int getSecond() const { return m_b; }
private:
int m_a;
int m_b;
};
// 仿函数类
class Encrypt {
public:
char operator()(char c) const {
if (c >= 'a' && c <= 'z') {
c = ((c - 'a') + 3) % 26 + 'a';
}
else if (c >= 'A' && c <= 'Z') {
c = ((c - 'A') + 3) % 26 + 'A';
}
return c;
}
};
// 转换函数,将三元组转换为二元组
Pair convert(const Triplet& t) {
return Pair(t.getFirst(), t.getSecond());
}
int main() {
Triplet t(1, 2, "hello world");
Pair p = convert(t);
cout << p.getFirst() << " " << p.getSecond() << endl;
const char* c = t.getThird();
cout << static_cast<const void*>(c) << endl; // 输出指针地址
cout << static_cast<const void*>(const_cast<char*>(c)) << endl; // 输出指向的字符串地址
Encrypt encrypt;
while (*c != '\0') {
cout << encrypt(*c);
c++;
}
cout << endl;
return 0;
}
```
阅读全文