Files
Work/mdiwin/STRING.CPP
2024-08-07 09:16:27 -04:00

134 lines
2.7 KiB
C++
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include <ctype.h>
#include <mdiwin/string.hpp>
String::String(int resourceID,HINSTANCE hInstance)
{
mnpStr=new char[MaxResourceString];
::memset(mnpStr,0,MaxResourceString);
::LoadString(hInstance,resourceID,(LPSTR)mnpStr,MaxResourceString);
}
int String::operator!=(const String &someString)const
{
if(!mnpStr && !someString.mnpStr)return 0;
if(!mnpStr || !someString.mnpStr)return 1;
return (::strcmp(mnpStr,someString.mnpStr));
}
int String::operator==(const String &someString)const
{
if(!mnpStr && !someString.mnpStr)return 1;
if(!mnpStr || !someString.mnpStr)return 0;
return (!::strcmp(mnpStr,someString.mnpStr));
}
int String::operator<(const String &someString)const
{
if(!mnpStr||!someString.mnpStr)return FALSE;
return (::strcmp(mnpStr,someString.mnpStr)<0);
}
int String::operator<=(const String &someString)const
{
if(!mnpStr||!someString.mnpStr)return FALSE;
if(*this<someString)return TRUE;
if(*this==someString)return TRUE;
return FALSE;
}
int String::operator=(const String &someString)
{
int stringLength;
if(!(stringLength=::strlen(someString.mnpStr)))return 0;
if(mnpStr)delete mnpStr;
mnpStr=new char[stringLength+1];
::strcpy(mnpStr,someString.mnpStr);
return 1;
}
int String::operator=(const char *someCharStar)
{
int stringLength;
if(!(stringLength=::strlen(someCharStar)))return 0;
if(mnpStr)delete mnpStr;
mnpStr=new char[stringLength+1];
::strcpy(mnpStr,someCharStar);
return 1;
}
int String::operator+=(const String &someString)
{
char *tempStr;
if(!someString.mnpStr)return 0;
if(!mnpStr)
{
mnpStr=new char[::strlen(someString.mnpStr)+1];
::strcpy(mnpStr,someString.mnpStr);
return 1;
}
tempStr=mnpStr;
mnpStr=new char[::strlen(tempStr)+::strlen(someString.mnpStr)+1];
::strcpy(mnpStr,tempStr);
::strcpy(mnpStr+::strlen(tempStr),someString.mnpStr);
delete tempStr;
return 1;
}
int String::operator+=(const char *someStr)
{
char *tempStr;
if(!someStr)return 0;
if(!mnpStr)
{
mnpStr=new char[::strlen(someStr)+1];
::strcpy(mnpStr,someStr);
return 1;
}
tempStr=mnpStr;
mnpStr=new char[::strlen(tempStr)+::strlen(someStr)+1];
::strcpy(mnpStr,tempStr);
::strcpy(mnpStr+::strlen(tempStr),someStr);
delete tempStr;
return 1;
}
int String::reserve(unsigned nBytes)
{
if(!nBytes)return 0;
if(mnpStr)delete mnpStr;
mnpStr=new char[nBytes];
::memset(mnpStr,0,nBytes);
return 1;
}
int String::token(const char *tokenString)
{
if(!tokenString)return 0;
if(!mnpStr)return 0;
if(::strtok(mnpStr,tokenString))return 1;
return 0;
}
void String::upper(void)
{
char *string=mnpStr;
if(!mnpStr)return;
while(*string)
{
*string=::toupper(*string);
string++;
}
}
int String::strstr(const char *string)const
{
if(!mnpStr)return 0;
return (int)::strstr(mnpStr,string);
}