TIP: Click on subject to list as thread! ANSI
echo: c_plusplus
to: VICTOR KEMP
from: KURT KUZBA
date: 1998-01-17 01:01:00
subject: char to string

VK>   Anyway I need to append a char onto the end of a string,
VK>   something like this
VK>      char stringvar[90];
VK>      char charvar;
VK>      strcat(stringvar, charvar);
   I was waiting for somebody to post a C++ way, but I guess
   that a C way will serve for both, since you aren't using
   the String class in the first place.
1.
sprintf(stringvar + strlen(stringvar), "%c", charvar);
2.
int len = strlen(stringvar);
stringvar[len++] = charvar;
stringvar[len] = (char)'\0';
   If you thought you might have need of this quite often,
   you might even construct your own string class.
   This example is tested in Borland C++ 3.1.
#include 
#include 
#include 
#include 
class MyStrings{
public:
   MyStrings(char*);
   ~MyStrings();
   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;
   iLen = 0;
   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 Nameof("K");
   cout << Nameof << endl;
   Nameof + 'u';
   cout << Nameof << endl;
   Nameof + "rt Kuzba";
   cout << Nameof << endl;
   Nameof = "Kurt";
   cout << "Hit a key, " << Nameof << endl;
   getch();
   return 0;
}
> ] Sometimes... That is all there is...........................
---
---------------
* 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™.