TIP: Click on subject to list as thread! ANSI
echo: c_plusplus
to: MIKE LUTHER
from: KURT KUZBA
date: 1998-02-03 07:27:00
subject: Help with multi-dim chara

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)

SOURCE: echomail via exec-pc

Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.