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