ML> Subject: Help with multi-dim character strings - please..:)
Have a look at this:
#include
#include
#include
#include
class MyStrings {
public:
MyStrings(char*);
~MyStrings();
const char *String(void){ return szString; }
friend ostream &operator << (ostream&, MyStrings&);
const char *operator =(char*);
const char *operator =(char);
const char *operator +(char*);
const char *operator +(char);
private:
int iLen;
char *szString;
};
MyStrings::MyStrings(char *szS = NULL)
{
szString = NULL;
if(szS && *szS)
{
szString = new char[(iLen = strlen(szS)) + 1];
sprintf(szString, "%s", szS);
}
}
MyStrings::~MyStrings(){ if(szString) delete []szString; }
ostream &operator << (ostream &O, MyStrings &clsString)
{ O << clsString.szString; return O; }
const char *MyStrings::operator=(char *szA)
{
char *temp = new char [(iLen = strlen(szA)) + 1];
sprintf(temp, "%s", szA);
if(szString) delete []szString;
szString = temp; return szString;
}
const char *MyStrings::operator=(char cA)
{
char *temp = new char [(iLen = 1) + 1];
sprintf(temp, "%c", cA);
if(szString) delete []szString;
szString = temp; return szString;
}
const char *MyStrings::operator+(char cA)
{
char *temp = new char [(++iLen) + 1];
sprintf(temp, "%s%c", szString, cA);
delete []szString;
szString = temp; return szString;
}
const char *MyStrings::operator+(char *szA)
{
char *temp = new char [(iLen += strlen(szA)) + 1];
sprintf(temp, "%s%s", szString, szA);
delete []szString;
szString = temp; return szString;
}
int main(void)
{
MyStrings **Book = new MyStrings*[10];
char *szBuf = new char[128];
int nPage, nLine;
for(nPage = 0; nPage < 10; nPage++)
{
Book[nPage] = new MyStrings[20];
for(nLine = 0; nLine < 20; nLine++)
{
sprintf(szBuf, "This is Line %d of Page %d of Book.",
nLine + 1, nPage + 1);
Book[nPage][nLine] = szBuf;
}
}
for(nPage = 1; nPage;)
{
for(nLine = 0; nLine < 20; nLine++)
cout << Book[nPage - 1][nLine] << endl;
cout " << flush;
cin >> nPage;
cout << endl;
nPage = (nPage > 0 && nPage < 11) ? nPage : 0;
}
for(nPage = 0; nPage < 10; nPage++)
for(nLine = 0; nLine < 20; nLine++) delete []Book[nPage];
delete []Book;
return 0;
}
> ] This Universe is 3-D captioned for the Magic Eye impaired...
---
---------------
* Origin: *YOPS ]I[* 3.1 GIG * RA/FD/FE RADist * Milwaukee, WI (1:154/750)
|