sing namespace std;
#include<cstring>
#include<cstdlib>
///////////////////////////////////////////////////////////
class String
{
protected:
enum { SZ = 80 };
char str[SZ];
int length;
public:
String():length(0) { str[0] = '\x0';}
String(char s[]) { strcpy(str, s); length=strlen(str); }
void display() const { cout << str <<endl; }
operator char*() { return str; }
int getlength() const {return length;}
};
/////////////////////////////////////////////////////////////////
class Pstring : public String
{
public:
Pstring(): String() {}
Pstring(char s[]);
};
Pstring::Pstring(char s[])
{
int n=strlen(s);
if (n>SZ)
{
for (int i=0;i<SZ;i++)
str[i]=s[i];
length=SZ;
}
else
{
strcpy(str,s);
length=strlen(str);
}
}
//////////////////////////////////////////////////////////////////////
class Pstring2 : public Pstring
{
public:
Pstring2(): Pstring(){ }
Pstring2(char s[]):Pstring(s) { }
char* left(Pstring2 s1,int n);
char* mid(Pstring2 s1,int s,int n);
char* right(Pstring2 s1,int n);
};
char* Pstring2::left(Pstring2 s1,int n)
{
if (n<=SZ)
{
int i;
for (i=0;i<n;i++)
str[i]=s1[i];
str[i]='\0';
}
else
exit(1);
return str;
}
char* Pstring2::right(Pstring2 s1,int n)
{
if (n<SZ)
{
int i;
for (i=0;i<n;i++)
str[i]=s1[s1.getlength()-n+i];
str[i]='\0';
}
else
exit(1);
return str;
}
char* Pstring2::mid(Pstring2 s1,int s,int n)
{
if (n<SZ&&s<SZ&&n+s<SZ)
{
int i;
for (i=0;i<n;i++)
str[i]=s1[s-1+i];
str[i]='\0';
}
else
exit(1);
return str;
}
/////////////////////// main ///////////////////////////////////////////////
int main()
{
Pstring2 str1,str2="Argentina";
str1.mid(str2,1,1);
str2.display();
str1.display();
system("pause");
return 0;
}