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

📄 cgstrtocnupper.cpp

📁 主要使用了stl中的string类
💻 CPP
字号:
// CgStrtoCnUpper.cpp: implementation of the CCgStrtoCnUpper class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "CgStrtoCnUpper.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CCgStrtoCnUpper::CCgStrtoCnUpper(string strInput)
{
	m_strOrigin=TrimSpace(strInput);
	m_bCgable=true;
	m_bCgable=ExaminateDotCount()*ExaminateOrigin();
	SeperateOriginString();
	m_strOutput="";
	CreateOutputString();
}

CCgStrtoCnUpper::~CCgStrtoCnUpper()
{

}

bool CCgStrtoCnUpper::ExaminateOrigin()
{
	bool bRetval=true;
	int n=m_strOrigin.length();
	string strtmp;
	for(int i=0;i<n;i++)
	{
		strtmp=m_strOrigin.at(i);
		bRetval*=ExaminateOneChar(strtmp);
	}
	return bRetval;
}

bool CCgStrtoCnUpper::ExaminateOneChar(string strInput)
{
	if(strInput=="0") return true;
	if(strInput=="1") return true;
	if(strInput=="2") return true;
	if(strInput=="3") return true;
	if(strInput=="4") return true;
	if(strInput=="5") return true;
	if(strInput=="6") return true;
	if(strInput=="7") return true;
	if(strInput=="8") return true;
	if(strInput=="9") return true;
	if(strInput==".") return true;
	return false;
}

string CCgStrtoCnUpper::TrimSpace(string strInput)
{
	string strretval="";
	string strtmp;
	int n=strInput.length();
	for(int i=0;i<n;i++)
	{
		strtmp=strInput.at(i);
		if(strtmp!=" " && strtmp!=",")
		{
			strretval+=strtmp;
		}
	}

	return strretval;
}

void CCgStrtoCnUpper::SeperateOriginString()
{
	if(!m_bCgable)
		return;

	int i;
	int n=m_strOrigin.length();
	i=m_strOrigin.find_first_of(".",0);

	if(i!=-1)
	{
		m_strFirst=m_strOrigin.substr(0,i);
		m_strSecond=m_strOrigin.substr(i+1,n-1-i);
	}
	else
	{
		m_strFirst=m_strOrigin;
		m_strSecond="";
	}
}

bool CCgStrtoCnUpper::ExaminateDotCount()
{
	int n=m_strOrigin.length();
	string strtmp;
	int DotCount=0;
	for(int i=0;i<n;i++)
	{
		strtmp=m_strOrigin.at(i);
		if(strtmp==".")
		{
			DotCount++;
		}
	}

	if(DotCount<2)
		return true;
	else
		return false;
}

void CCgStrtoCnUpper::CreateOutputString()
{
	int i,n;
	//1
	n=m_strFirst.length();
	string strtmp;
	for(i=0;i<n;i++)
	{
		strtmp=m_strFirst.at(i);

		if(GetCnUpper(strtmp)!="零")
		{
			m_strOutput+=GetCnUpper(strtmp);
			m_strOutput+=GetCnWeishu(n-i-1);
		}
	}

	if(m_strSecond=="") 
	{
		m_strOutput+="圆整";	
		return;
	}
	m_strOutput+="点";	

	//2
	n=m_strSecond.length();
	for(i=0;i<n;i++)
	{
		strtmp=m_strSecond.at(i);
		m_strOutput+=GetCnUpper(strtmp);
	}
}

string CCgStrtoCnUpper::GetCnUpper(string strInput)
{
	if(strInput=="0") return "零";
	if(strInput=="1") return "壹";
	if(strInput=="2") return "贰";
	if(strInput=="3") return "叁";
	if(strInput=="4") return "肆";
	if(strInput=="5") return "伍";
	if(strInput=="6") return "陆";
	if(strInput=="7") return "柒";
	if(strInput=="8") return "捌";
	if(strInput=="9") return "玖";
	return "";
}

string CCgStrtoCnUpper::GetCnWeishu(int nInput)
{
	if(nInput==0)	return "";
	if(nInput==1)	return "拾";
	if(nInput==2)	return "佰";
	if(nInput==3)	return "仟";
	if(nInput==4)	return "萬";

	if(nInput<8 && nInput>4)
	{
		return (GetCnWeishu(nInput-4)+"萬");
	}

	if(nInput==8)	return "亿";

	if(nInput>8)
	{
		return (GetCnWeishu(nInput-8)+"亿");
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -