📄 cgstrtocnupper.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 + -