📄 masterstring.cpp
字号:
break;
case '3':
return 3;
break;
case '4':
return 4;
break;
case '5':
return 5;
break;
case '6':
return 6;
break;
case '7':
return 7;
break;
case '8':
return 8;
break;
case '9':
return 9;
break;
case 'a':
return 10;
break;
case 'b':
return 11;
case 'c':
return 12;
case 'd':
return 13;
case 'e':
return 14;
case 'f':
return 15;
}
return -1; // failure ? never would get here
}
// convert hex value into a integer
int hextoint(char* buff)
{
int rt = 0;
if(buff[1] == 0)
{
return hextointc(buff[0]);
}
int len = strlen(buff);
int* hexval;
hexval = new int[len+1];
int hexvali = 0;
for(int i = 0; i < len; i++)
{
hexval[hexvali] = hextointc(buff[i]);
hexvali++;
}
int index = 0;
for(int z = hexvali-1; z >= 0; z--)
{
int cur;
if(index == 0)
{
cur = hexval[z];
index = 16;
}
else
{
cur = hexval[z] * index;
index = index * 16;
}
rt = rt + cur;
}
delete [] hexval;
return rt;
}
void tripcharup(char* buff, int up)
{
int len;
len = strlen(buff);
for(int i = 0; i < len; i++)
{
if(buff[i] != 0)
{
buff[i] = buff[i] + up;
}
}
}
void tripchardown(char* buff,int up)
{
int len;
len = strlen(buff);
for(int i = 0; i < len; i++)
{
if(buff[i] != 0)
{
buff[i] = buff[i] - up;
}
}
}
// replace single instance of a character
void replacechar(char* buff,char findchr,char replace)
{
int len;
len = strlen(buff);
for(int z = 0; z < len; z++)
{
if(buff[z] == findchr)
{
buff[z] = replace;
}
}
}
void rmvinst(char* buff,char* findstr,char* replacex,char* output)
{
int xt = ifindstr(NOPREV,buff,findstr);
char* temp;
temp = new char[strlen(buff)+1];
stringcopy(temp,buff);
char* ltemp;
char* rtemp;
ltemp = new char[strlen(buff)+1];
rtemp = new char[strlen(buff)+1];
leftcopy(buff,ltemp,xt);
rightcopy(buff,rtemp,xt+strlen(findstr));
cout << "\n#: " << ltemp << replacex << rtemp << endl;
strcpy(output,ltemp);
strcat(output,replacex);
strcat(output,rtemp);
delete [] temp;
delete [] ltemp;
delete [] rtemp;
}
// replace string
void replacestr(char* buff,char* findstr,char* replacex,char* output)
{
int xt;
xt = ifindstr(0,buff,findstr);
if(xt == -1)
{
return; // failure no string to replace
}
char* ptemp;
char* outtemp;
ptemp = new char[strlen(buff) + 500];
outtemp = new char[strlen(buff) + 500];
stringcopy(ptemp,buff);
while(1)
{
int xr;
xr = ifindstr(0,ptemp,findstr);
if(xr == -1)
{
break;
}
else
{
rmvinst(ptemp,findstr,replacex,outtemp);
stringcopy(ptemp,outtemp);
}
}
stringcopy(output,ptemp);
delete [] ptemp;
delete [] outtemp;
}
// random char
char randomchar(int max)
{
int x;
x = rand()%max;
char c;
c = x;
return c;
}
// random char + up
char randomchar(int max,int up)
{
int x;
x = rand()%max+up;
char c;
c = x;
return c;
}
// random string
void randomstr(char* buff,int max, int size)
{
for(int i = 0; i < size; i++)
{
if(rand()%2)
{
buff[i] = randomchar(max);
}
else
{
buff[i] = randomchar(max,rand()%10);
}
}
}
// remove char
void removechar(char* in,char* out,char c)
{
int len;
len = strlen(in);
int ic = 0;
for(int i = 0; i < len; i++)
{
if(in[i] != c)
{
out[ic] = in[i];
ic++;
}
}
out[ic] = 0;
}
// find single character in string
int findchar(char* str,char c)
{
int len = strlen(str);
for(int i = 0; i < len; i++)
{
if(str[i] == c)
{
return i;
}
}
return -1; // failure
}
// find char ex (inside)
int ifindchar(int start,char* str,char c)
{
int len = strlen(str);
for(int i = start+1; i < len; i++)
{
if(str[i] == c)
{
return i;
}
}
return -1;
}
// find single char backward
int findcharb(char* str,char c)
{
int len;
len = strlen(str);
for(int i = len; i > 0; i--)
{
if(str[i] == c)
{
return i;
}
}
return -1;
}
// find single char backward
int ifindcharb(int start,char* str,char c)
{
int len;
len = strlen(str);
for(int i = start-1; i > 0; i--)
{
if(str[i] == c)
{
return i;
}
}
return -1;
}
int findcharcf(char* str,int start,int stop,char c)
{
for(int i = start; i < stop; i++)
{
if(str[i] == c)
{
return i;
}
}
return -1; // failure
}
int findcharcb(char* str,int start,int stop,char c)
{
for(int i = stop; i > start; i--)
{
if(str[i] == c)
{
return i;
}
}
return -1;// failure
}
// remove instances of string
void removestr(char* input,char* output,char* string)
{
char* buff = input;
char* findstr = string;
int xt;
xt = ifindstr(NULLPOS,buff,findstr);
if(xt == -1)
{
return; // failure no string to replace
}
char* ptemp;
char* outtemp;
ptemp = new char[strlen(buff) + 500];
outtemp = new char[strlen(buff) + 500];
stringcopy(ptemp,buff);
while(1)
{
int xr;
xr = ifindstr(0,ptemp,findstr);
if(xr == -1)
{
break;
}
else
{
rmvstrx(ptemp,findstr,outtemp);
stringcopy(ptemp,outtemp);
}
}
stringcopy(output,ptemp);
delete [] ptemp;
delete [] outtemp;
}
void rmvstrx(char* buff,char* output,char* string)
{
int xt = ifindstr(NOPREV,buff,string);
char* temp;
temp = new char[strlen(buff)+1];
stringcopy(temp,buff);
char* ltemp;
char* rtemp;
ltemp = new char[strlen(buff)+1];
rtemp = new char[strlen(buff)+1];
leftcopy(buff,ltemp,xt);
rightcopy(buff,rtemp,xt+strlen(string));
strcpy(output,ltemp);
strcat(output,rtemp);
delete [] temp;
delete [] ltemp;
delete [] rtemp;
}
void strsavefile(char* filename,char* buff)
{
ofstream fout(filename);
fout << buff;
fout.close();
}
int getfilestringlength(char* filename)
{
int count = 0;
ifstream fin(filename);
if(fin)
{
char ch;
while(fin.get(ch))
{
count++;
}
fin.close();
return count;
} else { return -1; } // failure
return -1;
}
bool strloadfile(char* file,char* output)
{
int count = 0;
ifstream fin(file);
if(fin)
{
char ch;
int str_i = 0;
while(fin.get(ch))
{
output[str_i] = ch;
str_i++;
}
output[str_i] = 0;
return true;
}
else
{
return false;
}
return false;
}
void reversestring(char* input,char* output)
{
int len;
len = strlen(input);
int fcount = 0;
for(int i = len; i > 0; i--)
{
output[fcount] = input[i];
fcount++;
}
output[fcount] = 0;
}
bool isstrvalid(char* string)
{
int len = strlen(string);
for(int i = 0; i < len; i++)
{
if(string[i] == 0)
{
return true; // true it is a null terminated string!
}
}
return false;
}
// Save Master INI
bool SaveMasterINI(char* filename,MasterINI* mini)
{
ofstream fout(filename,ios::binary);
if(fout)
{
fout.write((char*)&mini,sizeof(mini));
fout.close();
return true;
}
fout.close();
return false;
}
// Load master INI
bool LoadMasterINI(char* filename,MasterINI* mini)
{
ifstream fin(filename,ios::binary);
if(fin)
{
fin.read((char*)&mini,sizeof(mini));
}
fin.close();
return false;
}
// string compare (case sensitive)
bool mstrcmp(char* buff1,char* buff2)
{
int len;
int len2;
len = strlen(buff1);
len2 = strlen(buff2);
if(len != len2)
{
return false; // not equal length
}
for(int i = 0; i < len; i++)
{
if(buff1[i] != buff2[i])
{
return false;
}
}
return true;
}
// string compare (not case sensitive)
bool mstrcmpx(char* buff1,char* buff2)
{
int len;
int len2;
len = strlen(buff1);
len2 = strlen(buff2);
if(len != len2)
{
return false; // not equal length
}
for(int i = 0; i < len; i++)
{
if(tolower(buff1[i]) != tolower(buff2[i]))
{
return false;
}
}
return true;
}
bool insidestr(char* buff1,char* buff2)
{
int chk;
chk = findstr(buff1,buff2);
if(chk == -1)
{
return false;
}
return true;
}
bool insidestrx(char* buff1,char* buff2)
{
char* pbuff1;
char* pbuff2;
pbuff1 = new char[strlen(buff1)+1];
pbuff2 = new char[strlen(buff2)+1];
stringcopy(pbuff1,buff1);
stringcopy(pbuff2,buff2);
lcase(pbuff1);
lcase(pbuff2);
int chk;
chk = findstr(pbuff1,buff2);
delete [] pbuff1;
delete [] pbuff2;
pbuff1 = 0;
pbuff2 = 0;
if(chk == -1)
{
return false;
}
return true;
}
// string seperation from 2 points
void strsep(char* str, char* sleft, int go_left, char* sright, int go_right)
{
leftcopy(str,sleft,go_left);
rightcopy(str,sright,go_right);
}
void strsetnull(char* str,int pos)
{
str[pos] = 0;
}
void rmvnullset(char* str)
{
int len;
len = strlen(str);
for(int i = 0; i < len; i++)
{
if(str[i] == 0)
{
str[i] = ' ';
}
}
}
int getnullpos(char* str)
{
int len = strlen(str);
for(int i = 0; i < len; i++)
{
if(str[i] == 0)
{
return i;
}
}
return -1; // failure to find 0
}
// trim commented characters ()
void trimcom(char* str, char* output,char start_c,char stop_c)
{
int len = strlen(str);
int index = 0;
bool iadd = true;
for(int z = 0; z < len; z++)
{
if(str[z] == start_c)
{
iadd = false;
}
if(str[z] == stop_c)
{
iadd = true;
}
if(iadd == true)
{
output[index] = str[z];
index++;
}
}
output[index] = 0;
}
// trim comments to an assembly language source file
void asmtrim(char* input,char* output)
{
trimcom(input,output,';','\n');
}
// count the number of lines exisitng within the source
int countlines(char* buffer)
{
return findoccourance(buffer,"\n");
}
// get the first letter thats not a space
int getfirstletter(char* buff)
{
int len = strlen(buff);
for(int i = 0; i < len; i++)
{
if(buff[i] != ' ')
{
return i;
}
}
return -1; // failure! no letters
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -