⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jnstring.cpp

📁 此次上传的使linux下的文件传输协议
💻 CPP
📖 第 1 页 / 共 3 页
字号:
#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 + -