21_1.cpp
资源名称:c.rar [点击查看]
上传用户:puke2000
上传日期:2022-07-25
资源大小:912k
文件大小:1k
源码类别:

C#编程

开发平台:

Visual C++

  1. //ch21_1.cpp
  2. #include <iostream.h>
  3. #include <string.h>
  4. class String{
  5. public:
  6.   String(char*, int);
  7. int Length(){ return len; }
  8.   class Range{        //异常类1
  9.   public:
  10.     Range(int j):index(j){}
  11.     int index;
  12.   };
  13.   class Size{};       //异常类2
  14.   class Pastm{};      //异常类3
  15.   char& operator[](int k)
  16.   {
  17.   if(0<=k && k<len){
  18.       if(p[k]=='m' && k!=len-1 && p[k+1]<='z' && p[k+1]>='a')
  19. throw Pastm();
  20. if(k && p[k-1]=='m' && p[k]>='a' && p[k]<='z')
  21. throw Pastm();
  22. return p[k];
  23. }
  24.     throw Range(k);
  25.   }
  26. private:
  27.   char* p;
  28.   int len;
  29.   static int max;
  30. };
  31. int String::max = 20;
  32. String::String(char* str, int si)
  33. {
  34.   if(si<0 || max<si)
  35.     throw Size();
  36.   p=new char[si];
  37.   strncpy(p, str, si);
  38.   len=si;
  39. }
  40. void g(String& str)
  41. {
  42.   int num=str.Length();
  43.   for(int n=0; n<num; n++)
  44.     cout <<str[n];
  45.   cout <<endl;
  46. }
  47. void f()
  48. {
  49.   //代码区1