📄 masterstring.cpp
字号:
// master string
// jared bruni
// my string algorithims :)
#include "masterstring.h"
// string copy
void stringcopy(char* input,char* output)
{
strcpy(input,output);
}
// string attach
void stringattach(char* input,char* output)
{
strcat(input,output);
}
// left copy
void leftcopy(char* input,char* output,int pos)
{
int index = 0;
for(int i = 0; i < pos; i++)
{
output[index] = input[i];
index++;
}
output[index] = 0;
}
// right copy
void rightcopy(char* input,char* output,int pos)
{
int index = 0;
int len = strlen(input);
for(int i = pos; i < len; i++)
{
output[index] = input[i];
index++;
}
output[index] = 0;
}
// mid copy
void midcopy(char* input,char* output,int start_pos, int stop_pos)
{
int index = 0;
for(int i = start_pos; i < stop_pos; i++)
{
output[index] = input[i];
index++;
}
output[index] = 0;
}
// trim the space
void trimspace(char* buffer)
{
int len;
len = strlen(buffer);
char* ptemp;
ptemp = new char[len+1];
strcpy(ptemp,buffer);
int index = 0;
for(int z = 0; z < len; z++)
{
if(ptemp[z] != ' ')
{
buffer[index] = ptemp[z];
index++;
}
}
buffer[index] = 0;
delete [] ptemp;
}
int findstr(char* body,char* search)
{
int len = strlen(body);
int len2 = strlen(search); // search len
for(int i = 0; i < len; i++)
{
if(body[i] == search[0])
{
bool ichk = true;
for(int z = 0; z < len2; z++)
{
if(body[i+z] == search[z])
{
}
else
{
ichk = false;
}
}
if(ichk == true)
{
return i;
}
}
}
return -1; // failure
}
int ifindstr(int startx,char* body,char* search)
{
int len = strlen(body);
int len2 = strlen(search); // search len
for(int i = startx+1; i < len; i++)
{
if(body[i] == search[0])
{
bool ichk = true;
for(int z = 0; z < len2; z++)
{
if(body[i+z] == search[z])
{
}
else
{
ichk = false;
}
}
if(ichk == true)
{
return i;
}
}
}
return -1; // failure
}
int findstrb(char* body,char* search)
{
int len = strlen(body);
int len2 = strlen(search);
for(int i = len; i > 0; i--)
{
if(body[i] == search[0])
{
bool ichk = true;
for(int z = 0; z < len2; z++)
{
if(body[i+z] == search[z])
{
}
else
{
ichk = false;
}
}
if(ichk == true)
{
return i; // found it
}
}
}
return -1; // failure
}
// find inside backwards string loop
int ifindstrb(int startx, char* body,char* search)
{
int len = strlen(body);
int len2 = strlen(search);
for(int i = startx-1; i > 0; i--)
{
if(body[i] == search[0])
{
bool ichk = true;
for(int z = 0; z < len2; z++)
{
if(body[i+z] == search[z])
{
}
else
{
ichk = false;
}
}
if(ichk == true)
{
return i; // found it
}
}
}
return -1; // failure
}
// forward search string (controled range)
int fsearchstr(int start,int stop,char* buff,char* search)
{
int len = strlen(buff);
int len2 = strlen(search);
for(int i = start; i < stop; i++)
{
if(buff[i] == search[0])
{
bool ichk = true;
for(int z = 0; z < len2; z++)
{
if(buff[i+z] == search[z])
{
}
else
{
ichk = false;
}
}
if(ichk == true)
{
return i; // found it
}
}
}
return -1; // failure
}
// backward search string (controled range)
int bsearchstr(int start,int stop,char* buff,char* search)
{
int len = strlen(buff);
int len2 = strlen(search);
for(int i = start; i > stop; i--)
{
if(buff[i] == search[0])
{
bool ichk = true;
for(int z = 0; z < len2; z++)
{
if(buff[i+z] == search[z])
{
}
else
{
ichk = false;
}
}
if(ichk == true)
{
return i; // found it;
}
}
}
return -1;// failure
}
// getting length
int getlen(char* buff)
{
return strlen(buff);// use strlen :)
}
// lower case
void lcase(char* buffer)
{
int len = getlen(buffer);
for(int i = 0; i < len; i++)
{
buffer[i] = tolower(buffer[i]);
}
}
// upercase
void ucase(char* buffer)
{
int len = getlen(buffer);
for(int i = 0; i < len; i++)
{
buffer[i] = toupper(buffer[i]);
}
}
// uppercase letter
int ucasel(char c)
{
return tolower(c);
}
// lowercase letter
int lcasel(char c)
{
return tolower(c);
}
// find string location algorithims
bool findstrloc(char* buff,char* search,MasStrDataLoc* dloc)
{
int len = strlen(buff);
int len2 = strlen(search);
int* f;
int f_i = 0;
f = new int[len+1];// big just in case
for(int i = 0; i < len; i++)
{
if(buff[i] == search[0])
{
bool ic = true;
for(int z = 0; z < len2; z++)
{
if(buff[i+z] == search[z])
{
}
else
{
ic = false;
}
}
if(ic == true)
{
f[f_i] = i;
f_i++;
}
}
}
dloc->create_array(f_i);
dloc->setstr(buff);
dloc->setsearchstr(search);
for(int p = 0; p < f_i; p++)
{
dloc->dindex[p] = f[p];
}
delete [] f;
if(f_i != 0)
{
dloc->setstatus(true);
return true; // we got some locations
}
else
{
dloc->setstatus(false);
return false; // not found
}
}
// find string location forward search
bool findstrlocf(char* buff,char* search,MasStrDataLoc* dloc)
{
return findstrloc(buff,search,dloc);
}
// find string location backwards search
bool findstrlocb(char* buff,char* search,MasStrDataLoc* dloc)
{
int len = strlen(buff);
int len2 = strlen(search);
int* f;
int f_i = 0;
f = new int[len+1];// big just in case
for(int i = len; i > 0; i--)
{
if(buff[i] == search[0])
{
bool ic = true;
for(int z = 0; z < len2; z++)
{
if(buff[i+z] == search[z])
{
}
else
{
ic = false;
}
}
if(ic == true)
{
f[f_i] = i;
f_i++;
}
}
}
dloc->create_array(f_i);
dloc->setstr(buff);
dloc->setsearchstr(search);
for(int p = 0; p < f_i; p++)
{
dloc->dindex[p] = f[p];
}
delete [] f;
if(f_i != 0)
{
dloc->setstatus(true);
return true; // we got some locations
}
else
{
dloc->setstatus(false);
return false; // not found
}
}
// string ( range based ) manipulation algorithims
bool searchrange(char* buff,char* search,MasStrRange* mrang)
{
int len;
int len2;
len = strlen(buff);
len2 = strlen(search);
for(int i = 0; i < len; i++)
{
if(buff[i] == search[0])
{
bool ik = true;
for(int z = 0; z < len2; z++)
{
if(buff[i+z] == search[z])
{
}
else
{
ik = false;
}
}
if(ik == true)
{
mrang->SetRange(i,i+len2);
return true;
}
}
}
mrang->SetRange(0,0);
return false;
}
// string range manipluation ex (i)
bool isearchrange(int startx, char* buff,char* search,MasStrRange* mrang)
{
int len;
int len2;
len = strlen(buff);
len2 = strlen(search);
for(int i = startx+1; i < len; i++)
{
if(buff[i] == search[0])
{
bool ik = true;
for(int z = 0; z < len2; z++)
{
if(buff[i+z] == search[z])
{
}
else
{
ik = false;
}
}
if(ik == true)
{
mrang->SetRange(i,i+len2);
return true;
}
}
}
mrang->SetRange(0,0);
return false;
}
// find the occourance amount of a specific string
int findoccourance(char* buff,char* search)
{
int len;
int len2;
len = strlen(buff);
len2 = strlen(search);
int occ = 0;
for(int i = 0; i < len; i++)
{
if(buff[i] == search[0])
{
bool ic = true;
for(int z = 0; z < len2; z++)
{
if(buff[i+z] == search[z])
{
}
else
{
ic = false;
}
}
if(ic == true)
{
occ++;
}
}
}
if(occ == 0)
{
return -1; // failure
}
else
{
return occ;
}
}
// string range manipulation copy left range
void copyleftrange(char* input,char* output,MasStrRange* mrang,int hi_lo)
{
if(hi_lo == MRANGE_HI)
{
leftcopy(input,output,mrang->GetRangeHI());
}
else
{
leftcopy(input,output,mrang->GetRangeLO());
}
}
// string range manipulation copy right range
void copyrightrange(char* input,char* output,MasStrRange* mrang,int hi_lo)
{
if(hi_lo == MRANGE_HI)
{
rightcopy(input,output,mrang->GetRangeHI());
}
else
{
rightcopy(input,output,mrang->GetRangeLO());
}
}
// string range manipulation mid copy
void copymidrange(char* input,char* output,MasStrRange* mrang, int hi_lo,MasStrRange* mrangx, int hi_lox)
{
int cx;
int cy;
if(hi_lo == MRANGE_HI)
{
cx = mrang->GetRangeHI();
}
else
{
cx = mrang->GetRangeLO();
}
if(hi_lox == MRANGE_HI)
{
cy = mrangx->GetRangeHI();
}
else
{
cy =mrangx->GetRangeLO();
}
midcopy(input,output,cx,cy);
}
// create a list from string data
void createstrlist(char* buff,char* search,MasStrList* list)
{
int occ;
occ = findoccourance(buff,search);
if(occ == -1)
{
return; // failure
}
list->create(occ);
int occ_i = 0;
MasStrDataLoc dloc;
if(findstrloc(buff,search,&dloc))
{
int pre_pos = 0;
for(int z = 0; z < dloc.getmaxpoint(); z++)
{
int cur = 0;
cur = dloc.dindex[z];
charwrap cwrap(buff);
cwrap.strclearn();
midcopy(buff,cwrap.get(),pre_pos,cur);
list->strings[occ_i].set(cwrap.get());
occ_i++;
pre_pos = cur;
}
charwrap cwrapx(buff,true);
rightcopy(buff,cwrapx.get(),pre_pos);
list->strings[occ_i].set(cwrapx.get());
occ_i++;
}
return;
}
// conversion of integers
void convertinteger(int integer,char* buff,int base)
{
itoa(integer,buff,base);
}
// conversion of strings
int convertstring(char* buff)
{
return atoi(buff);
}
// could this be a hexidecimal digit?
bool ishexc(char c)
{
c = lcasel(c);
switch(c)
{
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f':
return true;
break;
}
return false;
}
// does this string contain a non-hexidecimal digit?
bool ishex(char* buff)
{
int len;
len = strlen(buff);
for(int i = 0; i < len; i++)
{
if(ishexc(buff[i]) == false)
{
return false;
}
}
return true;
}
// hexidecimal digit to integer value
int hextointc(char c)
{
if(ishexc(c) == false)
{
return -1; // failure, not a hex digit
}
c = lcasel(c);
switch(c)
{
case '0':
return 0;
break;
case '1':
return 1;
break;
case '2':
return 2;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -