2016. 2. 19. 17:03ㆍKorean/개발백과사전
프로그래밍을 하다가 보면 똑같은 코드인데 요걸 어떻게 각 클래스 마다 중복시키지 않고 잘 활용할 수 있을까 하는 생각을 하게 됩니다.
이럴때 서비스클래스를 만들어서 이용해 보면 어떨까요?
예를 들어 100000원이 있습니다.
이걸 바로 화면상에 보여주면 일십백천만 이렇게 헤아려야겠지요, 그런데 여기에 100,000원 콤마를 넣어서 표현해 주면 사용자가 알아보기 쉽겠지요?
근데 이 숫자를 콤마를 넣어서 변환해 주는 코드는 여기저기 클래스에서 막 가져다 써야 한다면?
이럴때 서비스 클래스가 좋은것 같아요
구현 코드 입니다.
헤더파일이구요,
class GoldSpoonServices
{
public:
GoldSpoonServices();
~GoldSpoonServices();
// attributes
public:
static void addCommaIntoMoney(const int &iMoney, char *buffer);
static void addKorUnitIntoMoney(const long long &iMoney, std::string &oCurrency);
};
소스파일 입니다.
#include "GoldSpoonServices.h"
GoldSpoonServices::GoldSpoonServices(){}
GoldSpoonServices::~GoldSpoonServices(){}
void GoldSpoonServices::addCommaIntoMoney(const int &iMoney, char *buffer)
{
std::string szMoney = StringUtils::format("%d", iMoney);
const char *stringToMoney= szMoney.c_str();
int length;
int shift;
length= strlen(stringToMoney);
shift = -length;
while (*stringToMoney)
{
*buffer++ = *stringToMoney++;
if (++shift && (shift % 3) == 0)
*buffer++ = ',';
}
*buffer= '\0';
}
void GoldSpoonServices::addKorUnitIntoMoney(const long long &iMoney, std::string &oCurrency)
{
std::string szMoney = StringUtils::format("%lld", iMoney);
int length;
int shift;
/* count given string */
length= szMoney.length();
shift = length;
int idx = 0;
while (idx < length)
{
oCurrency.push_back(szMoney.at(idx++));
if (--shift && (shift % 4) == 0)
{
if(shift == 4)
oCurrency.append("만");
else if (shift == 8)
oCurrency.append("억");
else if (shift == 12)
oCurrency.append("조");
else if (shift == 16)
oCurrency.append("경");
else if (shift == 20)
oCurrency.append("해");
}
}
}
addKorUnitIntoMoney : 한국돈으로 표시해 줍니다. (예, 23억1000만2931원) 이렇게요.
그럼 즐거운 코딩 되세요.
'Korean > 개발백과사전' 카테고리의 다른 글
[Cocos2dx] 애니메이션 프레임 사용법 (animation sprite) (0) | 2016.03.18 |
---|---|
[Cocos2dx] Sprite에 TouchEvent 등록하기 (0) | 2016.03.18 |
Cocos2d에서 SingleTon 사용방법 및 소스코드 (0) | 2016.02.19 |
전역 구조체 사용방법 및 소스코드 (0) | 2016.02.19 |
COCOS2DX 에서 PUGIXML 사용방법 및 소스코드 (0) | 2016.02.19 |