📄 jnstring.cpp
字号:
#include "stdafx.h"
#include "Prog.h"
#include "JnString.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
JnString::JnString()
{
m_nDigit=0;
}
JnString::~JnString()
{
}
/***************************************************************************
函数名称:GetStrFind
函数功能:把按'符号'分隔的字符串数据逐个分离到数组中去
函数原理:
****************************************************************************/
void JnString::GetStrFind(CStringArray &array, CString sText, CString sFind)
{
CString str1;
while(sText.GetLength()>0)
{
str1=_T("");
LPTSTR pstr=NULL;
pstr=CStringToLPTSTR(sFind);
int nIndex = sText.Find(pstr);
if(nIndex==-1)
{
str1=sText;
sText=_T("");
}
else
{
nIndex++;
str1=sText.Left(nIndex);
sText=sText.Right(sText.GetLength()-nIndex);
}
str1.Replace(pstr,"");
if(str1!="")
array.Add(str1);
}
}
/***************************************************************************
函数名称:GetStrRight
函数功能:根据sFind返回字符串str的右边部分
函数原理:
****************************************************************************/
CString JnString::GetStrRight(CString str, CString sFind)
{
LPTSTR pstr=NULL;
pstr=CStringToLPTSTR(sFind);
int n=str.Find(pstr);
if(n>-1)
{
int nLenght=sFind.GetLength();
str=str.Right(str.GetLength()-n-nLenght);
return str;
}
else
{
return _T("");
}
// if(pstr)
// delete pstr;
}
/***************************************************************************
函数名称:GetStrLeft
函数功能:根据sFind返回字符串str的左边部分
函数原理:
****************************************************************************/
CString JnString::GetStrLeft(CString str, CString sFind)
{
int n;
LPTSTR pstr=NULL;
pstr=CStringToLPTSTR(sFind);
n=str.Find(pstr);
if(n>-1)
{
str=str.Left(n);
return str;
}
else
{
return _T("");
}
// if(pstr)
// delete pstr;
}
/***************************************************************************
函数名称:StrToDouble
函数功能:把字符串转换成双精度数字
函数原理:
****************************************************************************/
double JnString::StrToDouble(CString str)
{
if(str!="")
return atof(str);
else
return 0;
}
/***************************************************************************
函数名称:DoubleToStr
函数功能:把双精度数字转换成字符串
函数原理:
****************************************************************************/
CString JnString::DoubleToStr(double d, int nSet)
{
CString str;
switch(nSet)
{
case 1:
str.Format("%.1f",d);
break;
case 2:
str.Format("%.2f",d);
break;
case 3:
str.Format("%.3f",d);
break;
case 4:
str.Format("%.4f",d);
break;
case 5:
str.Format("%.5f",d);
break;
case 6:
str.Format("%.6f",d);
break;
default:
str.Format("%f",d);
}
if(str!="")
return str;
else
return _T("0");
}
/***************************************************************************
函数名称:StrToLong
函数功能:把字符串转换成长整数数字
函数原理:
****************************************************************************/
long JnString::StrToLong1(CString s)
{
return atol(s);
}
/***************************************************************************
函数名称:LongToStr
函数功能:把长整数转换成字符串
函数原理:
****************************************************************************/
CString JnString::LongToStr(long l)
{
char tbuf[20];
ltoa(l,tbuf,10);
return tbuf;
}
/***************************************************************************
函数名称:StrToInt
函数功能:把字符串转换成整数数字
函数原理:
****************************************************************************/
int JnString::StrToInt1(CString s)
{
return atoi(s);
}
/***************************************************************************
函数名称:IntToStr
函数功能:把整数转换成字符串
函数原理:
****************************************************************************/
CString JnString::IntToStr1(int n)
{
CString str;
str.Format("%d",n);
return str;
}
/***************************************************************************
函数名称:DoubleSet
函数功能:设置双精度数字小数点后面的位数
函数原理:
****************************************************************************/
double JnString::DoubleSet(double d, int nSet)
{
return atof(DoubleToStr(d,nSet));
}
/***************************************************************************
函数名称:DoubleToInt
函数功能:把双精度数四舍五入成整数
函数原理:
****************************************************************************/
int JnString::DoubleToInt(double d)
{
if(d<0)
return (int)(d-0.5);
else
return (int)(d+0.5);
}
/***************************************************************************
函数名称:DoubleToIntStr
函数功能:把双精度数四舍五入成整数并以字符串返回
函数原理:
****************************************************************************/
CString JnString::DoubleToIntStr(double d)
{
return IntToStr1(DoubleToInt(d));
}
/***************************************************************************
函数名称:DStrToDStr
函数功能:设置双精度字符串的末尾小数位数
函数原理:
****************************************************************************/
CString JnString::DStrToDStr(CString sDouble, int nSet)
{
if(nSet>0)
return DoubleToStr(StrToDouble(sDouble),nSet);
else
return IntToStr1(DoubleToInt(StrToDouble(sDouble)));
}
/***************************************************************************
函数名称:CStringToLPTSTR
函数功能:将字符串转换为字符数组指针
函数原理:
****************************************************************************/
LPTSTR JnString::CStringToLPTSTR(CString _str)
{
/* LPTSTR lpsz = new TCHAR[_str.GetLength()+1];//需要检查此处是否会发生内存泄漏
_tcscpy(lpsz, _str);
return lpsz;*/
LPCTSTR lpStr = (LPCTSTR)_str;
return ((LPTSTR)lpStr);
}
/***************************************************************************
函数名称:ConvertNumber
函数功能:将字符数字符号到中文大写数字符号
函数原理:
****************************************************************************/
CString JnString::ConvertNumber(CString sNum)
{
if(sNum=="0")
return _T("零");
else if(sNum=="1")
return _T("壹");
else if(sNum=="2")
return _T("贰");
else if(sNum=="3")
return _T("叁");
else if(sNum=="4")
return _T("肆");
else if(sNum=="5")
return _T("伍");
else if(sNum=="6")
return _T("陆");
else if(sNum=="7")
return _T("柒");
else if(sNum=="8")
return _T("捌");
else if(sNum=="9")
return _T("玖");
else
return _T("");
}
/***************************************************************************
函数名称:ConvertNumber
函数功能:将整型数字符号到中文大写数字符号
函数原理:
****************************************************************************/
CString JnString::ConvertNumber(int nNum)
{
return ConvertNumber(IntToStr1(nNum));
}
/***************************************************************************
函数名称:Jiami
函数功能:用密码加密字符串并返回
函数原理:
****************************************************************************/
CString JnString::Jiami(CString str1, CString sMima)
{
int nLenght=sMima.GetLength();
char charAt;
int nNum=32;
for(int i=0;i<nLenght;i++)
{
charAt=sMima.GetAt(i);
nNum+=(int)charAt;
}
nLenght=str1.GetLength();
BOOL bCk=FALSE;
for(i=0;i<nLenght;i++)
{
if(bCk)
str1.SetAt(i,str1.GetAt(i)+nNum+i+37);
else
str1.SetAt(i,str1.GetAt(i)-nNum-i-37);
}
return str1;
}
/***************************************************************************
函数名称:Jiemi
函数功能:用密码解密字符串并返回
函数原理:
****************************************************************************/
CString JnString::Jiemi(CString str1, CString sMima)
{
int nLenght=sMima.GetLength();
char charAt;
int nNum=32;
for(int i=0;i<nLenght;i++)
{
charAt=sMima.GetAt(i);
nNum+=(int)charAt;
}
nLenght=str1.GetLength();
BOOL bCk=FALSE;
for(i=0;i<nLenght;i++)
{
if(bCk)
str1.SetAt(i,str1.GetAt(i)-nNum-i-37);
else
str1.SetAt(i,str1.GetAt(i)+nNum+i+37);
// str1.SetAt(i,str1.GetAt(i)-nNum-i);
}
return str1;
}
/***************************************************************************
函数名称:UpNumber
函数功能:数字转换为中文大写
函数原理:
****************************************************************************/
CString JnString::UpNumber(CString sNumber)
{
if(sNumber=="")
return _T("");
int n1,n2;
CString strTemp,sTempA,DXStr=_T("");
n1=sNumber.Find('.');
if(n1==-1 || n1==sNumber.GetLength()-1) //说明这串数字中没有小数点
{
sNumber.Replace(".",_T(""));
n2=sNumber.GetLength();
for(int i=1;i<=n2;i++)
{
sNumber.TrimLeft();
sNumber.TrimRight();
strTemp=sNumber.GetAt(n2-i);
strTemp=ConvertNumber(strTemp);
switch(i)
{
case 1:
if(strTemp=="零")
strTemp=_T("元");
else
strTemp+=_T("元");
break;
case 2:
if(strTemp=="零")
strTemp=_T("零");
else
strTemp+=_T("拾");
break;
case 3:
if(strTemp=="零")
strTemp=_T("零");
else
strTemp+=_T("佰");
break;
case 4:
if(strTemp=="零")
strTemp=_T("零");
else
strTemp+=_T("仟");
break;
case 5:
if(strTemp=="零")
strTemp=_T("万");
else
strTemp+=_T("万");
break;
case 6:
if(strTemp=="零")
strTemp=_T("零");
else
strTemp+=_T("拾");
break;
case 7:
if(strTemp=="零")
strTemp=_T("零");
else
strTemp+=_T("佰");
break;
case 8:
if(strTemp=="零")
strTemp=_T("零");
else
strTemp+=_T("仟");
break;
case 9:
if(strTemp=="零")
strTemp=_T("亿");
else
strTemp+=_T("亿");
break;
}
DXStr.TrimLeft();
DXStr.TrimRight();
sTempA=DXStr.Left(2);
if(strTemp=="零")
{
if(sTempA=="零")
{
DXStr=DXStr;
}
else if(sTempA=="元")
{
DXStr=DXStr;
}
else if(sTempA=="万")
{
DXStr=DXStr;
}
else if(sTempA=="亿")
{
DXStr=DXStr;
}
else
{
DXStr=strTemp+DXStr;
}
}
else
{
DXStr=strTemp+DXStr;
}
}
}
else
{
//在这里需要分两个步骤进行解题:
//1,分解小数点前面的数字,和上面的步骤一样,
//2,分解小数点后面的数字
CString s1,s2=_T("");
s1=sNumber.Right(sNumber.GetLength()-n1-1);
sNumber=sNumber.Left(n1);
n2=sNumber.GetLength();
for(int i=1;i<=n2;i++)
{
sNumber.TrimLeft();
sNumber.TrimRight();
strTemp=sNumber.GetAt(n2-i);
strTemp=ConvertNumber(strTemp);
switch(i)
{
case 1:
if(strTemp=="零")
strTemp=_T("元");
else
strTemp+=_T("元");
break;
case 2:
if(strTemp=="零")
strTemp=_T("零");
else
strTemp+=_T("拾");
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -