📄 code.h
字号:
//#ifndef _CODE_H
//#define _CODE_H
//if cbc is before 127(contains 127) cac = ccode + (cbc -31) - 1 =ccode + cbc -32
//if cbc is after 127 cac = [ccode + (cbc -31) - 1] - 127 + 31 = ccode + cbc -128
//if cac >= ccode cbc = cac + 32 - ccode
//if cac < ccode cbc = cac + 128 - ccode
#include<fstream>
#include<string>
#include "dia1.h"
#include "dia2.h"
#include "dia3.h"
#include "dia4.h"
#include "dia5.h"
#include "dia6.h"
#include "dia7.h"
using namespace std;
class Code
{
public:
static char codeChar(char cbc ,char ccode)
{
if(!(int(cbc)<=127 && int(cbc)>=32 && int(ccode)<=127 && int(ccode)>=32)) return cbc;
if(int(ccode + cbc -32) <=127) return char(ccode + cbc -32);
else return char(ccode + cbc - 128);
}
static char decodeChar(char cac ,char ccode)
{
if(!(int(cac)<=127 && int(cac)>=32 && int(ccode)<=127 && int(ccode)>=32)) return cac;
if(cac >= ccode) return char(cac + 32 - ccode);
else return char(cac + 128 - ccode);
}
static string codeString(const string & bc , const string & co)
{
if(bc == "" ||co == "") return bc;
string ac;
ac.assign(bc);
int i =0,j =0 ,k =0;
for(i = 1; i<=(bc.length() / co.length()+1) && k < bc.length(); i++)
{
for( j = 0; j < co.length() && k < bc.length(); j++ , k++)
{
ac[k] = codeChar(bc.at(k) , co.at(j));
}
}
return ac;
}
static string decodeString(const string & ac ,const string & co)
{
if(ac == "" || co == "" ) return ac;
string bc;
bc.assign(ac);
int i = 0 ,j = 0 , k = 0;
for(i = 1; i<=(ac.length() / co.length()+1) && k < ac.length(); i++)
{
for( j = 0; j < co.length() && k < ac.length(); j++ , k++)
{
bc[k] = decodeChar(ac.at(k) , co.at(j));
}
}
return bc;
}
static bool codeFile(string fn1, string fn2, string co)
{
char temp ;
bool succeed = NULL;
string data;
string code(co);
data.assign(code); ///////
ifstream inf;
ofstream outf;
inf.open(fn1.c_str(),ios::in);
outf.open(fn2.c_str(),ios::out);
if(!inf)
{
dia1 d1;
d1.DoModal();
return false;
}
if(!outf)
{
dia5 d5;
d5.DoModal();
return false;
}
while(!inf.eof())
{
for(int i = 0; i < code.length();i++)
{
if(inf.eof())
{
string te = data;
data = "";
data.assign(te ,0,i-1);
break;
}
inf.get(temp);
data[i] = temp;
}
outf<<Code::codeString(data,code);
succeed = true;
}
inf.close();
outf.close();
return succeed;
}
static bool decodeFile(string fn1,string fn2,string co)
{
char temp ;
bool succeed = false;
string data;
string code(co);
data.assign(code); ///////
ifstream inf;
ofstream outf;
inf.open(fn1.c_str(),ios::in);
outf.open(fn2.c_str(),ios::out);
if(!inf)
{
dia1 d1;
d1.DoModal();
return false;
}
if(!outf)
{
dia5 d5;
d5.DoModal();
return false;
}
while(!inf.eof())
{
for(int i = 0; i < code.length();i++)
{
if(inf.eof())
{
string te = data;
data = "";
data.assign(te ,0,i-1);
break;
}
inf.get(temp);
data[i] = temp;
}
outf<<Code::decodeString(data,code);
succeed = true;
}
inf.close();
outf.close();
return succeed;
}
};
/*
static bool codeFile(string infname ,string outfname ,string co)
{
bool succeed = false;
ifstream inf;
inf.open(infname ,ios::in);
ofstream outf;
outf.open(outfname ,ios::out);
while(!inf.eof())
{
for(int i = 0; i < code.length();i++)
{
if(inf.eof())
{
string te = data;
data = "";
data.assign(te ,0,i-1);
break;
}
inf.get(temp);
data[i] = temp;
}
outf<<Code::codeString(data,code);
succeed = true;
}
inf.close();
outf.close();
return succeed;
}
*/
//#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -