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

📄 cgstrtocnupper.cpp

📁 这个程序是用C++来实现阿拉伯数字转为大写汉字.
💻 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 + -