首页 > 其他 > 详细

工具类

时间:2014-02-27 03:00:33      阅读:420      评论:0      收藏:0      [点我收藏+]
bubuko.com,布布扣
#include "Common.h"
#ifdef WIN32
#include <Windows.h>
#else
#include <stdlib.h>
#include <locale.h>
#endif

#include "iconvstring/IconvString.h"
#include "iconvstring/IconvStringEx.h"

USING_NS_CC;

namespace
{
    int MonthWeekDay [10][12][1] = 
    {
        // 2013
        {
            {0}, {0}, {0}, {0}, {0}, {0}, {1}, {4}, {7}, {2}, {5}, {7}
        },
            // 2014
        {
            {3}, {6}, {6}, {2}, {4}, {7}, {2}, {5}, {1}, {3}, {6}, {2}
        },
            // 2015
        {
            {4}, {7}, {7}, {3}, {5}, {1}, {3}, {6}, {2}, {4}, {7}, {2}    
        },
            // 2016
        {
            {5}, {1}, {2}, {5}, {7}, {3}, {5}, {1}, {4}, {6}, {2}, {4}
        },
            // 2017
        {
            {7}, {3}, {3}, {6}, {1}, {4}, {6}, {2}, {5}, {7}, {3}, {5}
        },
            // 2018
        {
            {1}, {4}, {4}, {7}, {2}, {5}, {7}, {3}, {6}, {1}, {4}, {6}
        },
            // 2019
        {
            {2}, {6}, {5}, {1}, {3}, {6}, {1}, {4}, {7}, {2}, {5}, {1}
        },
            // 2020
        {
            {1}, {6}, {7}, {3}, {5}, {1}, {3}, {6}, {2}, {4}, {7}, {2}
        },
            // 2021
        {
            {5}, {1}, {1}, {1}, {6}, {2}, {4}, {7}, {3}, {5}, {1}, {3}
        },
            // 2022
        {
            {6}, {2}, {2}, {5}, {7}, {3}, {5}, {1}, {4}, {6}, {2}, {4}
        }
    };
}

//////////////////////////////////////////////////////////////////////////
//
std::wstring s2ws(const std::string& s)
{
    setlocale(LC_ALL, "chs"); 

    const char* _Source = s.c_str();
    size_t _Dsize = s.size() + 1;
    wchar_t *_Dest = new wchar_t[_Dsize];
    wmemset(_Dest, 0, _Dsize);
    mbstowcs(_Dest,_Source,_Dsize);
    std::wstring result = _Dest;
    delete []_Dest;

    setlocale(LC_ALL, NULL);

    return result;
}

//////////////////////////////////////////////////////////////////////////
//
bool SafeCopy(char * pTarget, const char * pSource, int nBufLen/* = 0 */)
{
    try
    {
        if(pTarget)
        {
            pTarget[0] = 0;
            if(pSource)
            {
                if(nBufLen && (int)strlen(pSource) >= nBufLen)
                {
                    strncpy(pTarget, pSource, nBufLen - 1);
                    pTarget[nBufLen - 1] = \0;
                    return false;
                }
                strcpy(pTarget, pSource);
            }
            return true;
        }
    }
    catch(...)
    { 
        CCLOG("SafeCopy Failed...");
    }

    assert(!"SafeCopy()");
    return false;
}

//////////////////////////////////////////////////////////////////////////
//
static float nLine = 0.1;
void OpenDebugDiglog(const char* pError)
{
    return;
    if(!pError || strlen(pError) == 0)
        return;
    CCDirector* pDirector = CCDirector::sharedDirector();
    if (!pDirector)
        return;

    CCScene* pScene = pDirector->getRunningScene();
    if(!pScene)
        return;
    CCLayer* pDeBugLayer = CCLayer::create();
    if (!pDeBugLayer)
        return;
    pScene->addChild(pDeBugLayer, 999999999);
    const CCSize& size = CCDirector::sharedDirector()->getWinSize();
    CCLabelTTF* pDeBugWord = CCLabelTTF::create(StrToUTF8(pError).c_str(), "微软雅黑", 24);
    pDeBugWord->setAnchorPoint(ccp(0.5, 0.5));
    pDeBugWord->setColor(ccRED);
    pDeBugWord->setPosition(ccp(size.width * 0.5, size.height * nLine));
    nLine = nLine + 0.05;
    pDeBugLayer->addChild(pDeBugWord);
}

//////////////////////////////////////////////////////////////////////////
//
static int MultiByteToWideCharAlex(wchar_t* Dest, const char* Source, unsigned int nSize)
{
    int n = 0;
#ifdef WIN32
#else
    setlocale(LC_ALL, "chs");//设置代码页
    n = mbstowcs(Dest, Source, nSize);
    setlocale(LC_ALL, NULL);
#endif 

    return n;    
}

static int WideCharToMultiByteAlex(char* Dest, const wchar_t* Source, unsigned int nSize)
{
    setlocale(LC_ALL, "chs");//设置代码页
    int n = wcstombs(Dest, Source, nSize);
    setlocale(LC_ALL, NULL);
    return n;
}

//////////////////////////////////////////////////////////////////////////
//
std::string StrToUTF8(const char* pczBuffer)
{
    std::string strText(pczBuffer);
#ifdef WIN32
    if(!strText.empty())
    {
        std::wstring pwszText = s2ws(strText);
        strText = WStrToUTF8(pwszText);
    }
    
#endif
    return strText;
}

//////////////////////////////////////////////////////////////////////////
//
std::string StrToUTF8Ex(const char* pczBuffer)
{
#ifdef WIN32
    std::string strText(pczBuffer);
    if(!strText.empty())
    {
        std::wstring pwszText = s2ws(strText);
        strText = WStrToUTF8(pwszText);
    }
    
    return strText;
#else
    int nInLen = strlen(pczBuffer);
    size_t inlen = strlen(pczBuffer);
    size_t outlen = inlen << 1;
    char* outbuf = (char*)malloc(outlen);
    char* inbuf = new char[inlen + 1];

    SafeCopy(inbuf, pczBuffer, inlen + 1);
    inbuf[inlen] = \0;

    GBKToUTF8(inbuf, inlen, outbuf, outlen);

    std::string strText(outbuf);
    free(outbuf);
    delete[] pszBuffer;
    return strText;
#endif
}

//////////////////////////////////////////////////////////////////////////
//
std::string UTF8ToGBK(const char* pszBuffer)
{
    if(!pszBuffer || strlen(pszBuffer) == 0)
        return NULL;

    size_t inlen = strlen(pszBuffer);
    size_t outlen = inlen << 1;
    char* outbuf = new char[outlen];
    char* inbuf = new char[inlen + 1];
    SafeCopy(inbuf, pszBuffer, inlen + 1);
    UTF8ToGBK(inbuf, inlen, outbuf, outlen);
    std::string strText(outbuf);
    delete[] outbuf;
    delete[] inbuf;
    return strText;
}

//////////////////////////////////////////////////////////////////////////
//
int GetMonthDays(int nYear, int nMonth)
{
    int nFlag = 0;
    if(nYear %4 ==0 && nYear % 100 !=0 || nYear % 400 == 0)
        nFlag = 1;  //是闰年
    switch(nMonth)
    {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
        return 31;
        break;
    case 2:
        {

        }
        if(nFlag == 1)
            return 29;
        else
            return 28;
        break;
    case 4:
    case 6:
    case 9:
    case 11:
        return 30;
    default:
        return -1;
    }
}

int GetMonthWeekDay(int nYear, int nMonth)
{
    int nFirstParam = nYear - 13;
    int nSecondParam = nMonth - 1;
    return MonthWeekDay[nFirstParam][nSecondParam][0];
} 
bubuko.com,布布扣

工具类,布布扣,bubuko.com

工具类

原文:http://www.cnblogs.com/newlist/p/3568601.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!