2024/5/3 C++五一

编写一个程序,该程序包含两个类。类A中实现一个成员函数MyGetChar(),该函数按顺序返回一个数字字符。例如,第一次返回‘0’,第二次返回‘1’,以此类推,类B中实现一个成员函数MyGetChar(),该函数按顺序返回一个字母字符。例如,第一次返回‘a’,第二次返回‘b’,以此类推,程序交替调用类A和类B的函数,实现如“0a1b2c”,完成对字符串通过下标访问时的异常处理机制(越界访问)

#include <iostream>
#include <string>
using namespace std;
class CharGenerator {
public:
    virtual ~CharGenerator() = default;
    virtual char MyGetChar() = 0; // 纯虚函数,定义接口
};

class A : public CharGenerator {
private:
    int counter = 0;
public:
    char MyGetChar() override {
        if (counter > 9) {
            throw out_of_range("Counter out of range for class A");
        }
        return '0' + counter++;
    }
};

class B : public CharGenerator {
private:
    int counter = 0;
public:
    char MyGetChar() override {
        if (counter > 25) { // 假设只生成小写字母'a'到'z'
            throw out_of_range("Counter out of range for class B");
        }
        return 'a' + counter++;
    }
};

string GenerateAlternatingString(int length) {
    string result;
    A a;
    B b;

    try {
        for (int i = 0; i < length; ++i) {
            if (i % 2 == 0) {
                result += a.MyGetChar();
            } else {
                result += b.MyGetChar();
            }
        }
    } catch (const out_of_range& e) {
        cerr << "Exception caught: " << e.what() <<endl;
        // 根据需要处理异常,比如重置计数器或退出程序
    }

    return result;
}

int main() {
    try {
        string alternatingString = GenerateAlternatingString(10); // 假设我们生成10个字符的字符串
        cout << alternatingString << endl;
    } catch (const exception& e) {
        cerr << "Unhandled exception: " << e.what() << endl;
    }

    return 0;
}

相关推荐

  1. 2024/5/3 C++

    2024-05-04 20:38:02       13 阅读
  2. 2024/5/2 C++

    2024-05-04 20:38:02       11 阅读
  3. 假期——1

    2024-05-04 20:38:02       12 阅读
  4. c++ primer中文版第版作业第十

    2024-05-04 20:38:02       26 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-04 20:38:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-04 20:38:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-04 20:38:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-04 20:38:02       20 阅读

热门阅读

  1. PPT基础

    PPT基础

    2024-05-04 20:38:02      12 阅读
  2. SpringCloud相关面试题(详细解答)

    2024-05-04 20:38:02       11 阅读
  3. 2024十大免费cms建站系统有哪些

    2024-05-04 20:38:02       15 阅读
  4. 某夸克pan之搜索接口

    2024-05-04 20:38:02       11 阅读
  5. AI做画的算法原理

    2024-05-04 20:38:02       7 阅读
  6. 数字化思维的目的与价值,你真的懂吗?

    2024-05-04 20:38:02       9 阅读
  7. jvm内存模型五大部分是那些

    2024-05-04 20:38:02       11 阅读
  8. python直接发布到网站wordpress之二发布图片

    2024-05-04 20:38:02       12 阅读
  9. Mac Word文档没保存但是word突然卡住

    2024-05-04 20:38:02       12 阅读