亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? strcast.h

?? 方便的utf8
?? H
?? 第 1 頁 / 共 2 頁
字號:
#ifndef __DNC_STRCAST_H__
#define __DNC_STRCAST_H__
//##############################################################################
//The dnc Library
//Copyright (c) 2005 Dreamsoft 趙純華
//定義字符串轉換器,把你所要的東西轉換成字符串
//##############################################################################
//
//Last update: 2005-11-9

#ifndef __DNC_DEFINE_H__
#include "define.h"
#endif
#ifndef __DNC_UTF8_H__
#include "utf8.h"
#endif
#include <wchar.h>

#ifdef __GNUC__
#define utf8(s) dnc::string_cast<dnc::uchar>(s).str()
#else
#define utf8(s) dnc::string_cast<dnc::uchar>(L##s).str()
#endif

namespace dnc{
//------------------------------------------------------------------------------
//相同類型的轉換
//------------------------------------------------------------------------------
#ifdef DNC_OLDVC
	template<class TDescType>
	class string_cast{
		enum{t_nBufferLength =  128};
#else
	template<class TDescType,int t_nBufferLength =  128 >
	class string_cast{
#endif
	public:
		typedef TDescType SrcType;
		typedef TDescType DescType;
	public:
		string_cast( SrcType* psz ):
			m_psz( psz )
		{
			m_length = -1;
		}
		~string_cast() throw(){
		}
		inline operator DescType* () const throw(){
			return const_cast<DescType*>(m_psz);
		}
		inline DescType* c_str() const throw(){
			return const_cast<DescType*>(m_psz);
		}
        inline std::basic_string<TDescType> str() const{
            return std::basic_string<TDescType>(m_psz,size());
        }
		inline size_t size() const{
			if(m_length == -1){
				m_length = getLength(TDescType());
			}
			return m_length;
		}

		
	public:
		size_t  m_length;
		DescType* m_psz;
	private:
		inline size_t getLength(char) const{
			return strlen(m_psz);
		}
		inline size_t getLength(wchar_t) const{
			return wcslen(m_psz);
		}
		string_cast( const string_cast& ) throw();
		string_cast& operator=( const string_cast& ) throw();
	};

//------------------------------------------------------------------------------
//to wchar_t*
//------------------------------------------------------------------------------
#ifdef DNC_OLDVC
	template<>
	class string_cast<wchar>{
		enum{t_nBufferLength =  128};
#else
	template<int t_nBufferLength>
	class string_cast<wchar,t_nBufferLength>{
#endif
	public:
		typedef char	SrcType;
		typedef wchar_t DescType;
	public:
		//char* to wchar_t*
		explicit string_cast(castr psz,size_t count = -1) :
			m_psz( m_szBuffer ),
			m_isSameType(false)
		{
			init(psz,count == -1 ? strlen(psz) : count);
		}
		explicit string_cast(astr psz,size_t count = -1) :
			m_psz( m_szBuffer ),
			m_isSameType(false)
		{
			init(psz,count == -1 ? strlen(psz) : count);
		}
        //uchar* to wchar_t*
		explicit string_cast(custr psz,size_t count = -1) :
			m_psz( m_szBuffer ),
			m_isSameType(false)
		{
			init(psz,count == -1 ? strlen((char*)psz) : count);
		}
		explicit string_cast(ustr psz,size_t count = -1) :
			m_psz( m_szBuffer ),
			m_isSameType(false)
		{
			init(psz,count == -1 ? strlen((char*)psz) : count);
		}
        explicit string_cast(const std::string &sz,size_t count = -1) :
			m_psz( m_szBuffer ),
			m_isSameType(false)
		{
			init((custr)sz.c_str(),count == -1 ? sz.size() : count);
		}
        explicit string_cast(const dnc::utf8_const_iterator &it ,size_t count = -1) :
			m_psz(m_szBuffer),
			m_isSameType(false)
		{
			init((custr)(const char*)it,count == -1 ? strlen(it) : count);
		}
        //wchar_t* to wchar_t*
		explicit string_cast(const wchar_t* psz )  :
			m_psz((DescType*)psz),
			m_isSameType(true),
			m_length(-1)
		{
		}
		explicit string_cast(wchar_t* psz )  :
			m_psz((DescType*)psz),
			m_isSameType(true),
			m_length(-1)
		{
		}

		////int to wchar_t*
		//explicit string_cast(NullType val)  :
		//	m_psz( m_szBuffer ),
		//	m_isSameType(false),
		//	m_length(4)
		//{
		//	wcscpy(m_psz,L"null");
		//}
		//explicit string_cast(bool val)  :
		//	m_psz( m_szBuffer ),
		//	m_isSameType(false),
		//	m_length(-1)
		//{
		//	sprintf(m_psz,t_nBufferLength,L"%i",val);
		//}
		//explicit string_cast(char val)  :
		//	m_psz( m_szBuffer ),
		//	m_isSameType(false),
		//	m_length(-1)
		//{
		//	sprintf(m_psz,L"%i",val);
		//}
		//explicit string_cast(unsigned char val)  :
		//	m_psz( m_szBuffer ),
		//	m_isSameType(false),
		//	m_length(-1)
		//{
		//	sprintf(m_psz,t_nBufferLength,L"%i",val);
		//}
		//explicit string_cast(short val)  :
		//	m_psz( m_szBuffer ),
		//	m_isSameType(false),
		//	m_length(-1)
		//{
		//	sprintf(m_psz,t_nBufferLength,L"%i",val);
		//}
		//explicit string_cast(unsigned short val)  :
		//	m_psz( m_szBuffer ),
		//	m_isSameType(false),
		//	m_length(-1)
		//{
		//	sprintf(m_psz,t_nBufferLength,L"%i",val);
		//}
		//explicit string_cast(long val)  :
		//	m_psz( m_szBuffer ),
		//	m_isSameType(false),
		//	m_length(-1)
		//{
		//	sprintf(m_psz,t_nBufferLength,L"%i",val);
		//}
		//explicit string_cast(unsigned long val)  :
		//	m_psz( m_szBuffer ),
		//	m_isSameType(false),
		//	m_length(-1)
		//{
		//	sprintf(m_psz,t_nBufferLength,L"%i",val);
		//}
		//explicit string_cast(int val)  :
		//	m_psz( m_szBuffer ),
		//	m_isSameType(false),
		//	m_length(-1)
		//{
		//	sprintf(m_psz,t_nBufferLength,L"%i",val);
		//}
		//explicit string_cast(unsigned int val)  :
		//	m_psz( m_szBuffer ),
		//	m_isSameType(false),
		//	m_length(-1)
		//{
		//	sprintf(m_psz,t_nBufferLength,L"%i",val);
		//}
		//explicit string_cast(long long val)  :
		//	m_psz( m_szBuffer ),
		//	m_isSameType(false),
		//	m_length(-1)
		//{
		//	sprintf(m_psz,t_nBufferLength,L"%i",val);
		//}
		//explicit string_cast(unsigned long long val)  :
		//	m_psz( m_szBuffer ),
		//	m_isSameType(false),
		//	m_length(-1)
		//{
		//	sprintf(m_psz,t_nBufferLength,L"%i",val);
		//}
		////double to wchar_t*
		//explicit string_cast(double val)  :
		//	m_psz( m_szBuffer ),
		//	m_isSameType(false),
		//	m_length(-1)
		//{
		//	sprintf(m_psz,t_nBufferLength,L"%f",val);
		//}
		////float to wchar_t*
		//explicit string_cast(float val)  :
		//	m_psz( m_szBuffer ),
		//	m_isSameType(false),
		//	m_length(-1)
		//{
		//	sprintf(m_psz,t_nBufferLength,L"%f",val);
		//}
		////Variant to wchar_t*
		//explicit string_cast(const Variant &val)  :
		//	m_psz( m_szBuffer ),
		//	m_isSameType(false),
		//	m_length(-1)
		//{
		//	const dlc_variant& v=(const dlc_variant&)val;
		//	switch(getVariantTypeId(v)){
		//		case vt_string:
		//			init(v.strval);
		//			break;
		//		default:
		//			//std::string str;
		//			//getVariant(val,str);
		//			//m_length = str.size();
		//			//size_t len = m_length+1;
		//			//if(len > t_nBufferLength){
		//			//	m_psz = new wchar_t[len];
		//			//}
		//			//wcscpy(m_psz,str.c_str());
		//			assert("not implementation" && 0);
		//	}
		//}
		//template<class TSrc>
		//explicit string_cast(const TSrc &val)  :
		//	m_psz( m_szBuffer ),
		//	m_isSameType(false),
		//	m_length(-1)
		//{
		//	StringT<DescType> str;
		//	val.toString(str);
		//	if(str.size() >= t_nBufferLength){
		//		m_psz = new DescType[str.size()+1];
		//	}
		//	m_length = str.size();
		//	memcpy(m_psz,str.c_str(),m_length+1);
		//}
		~string_cast() throw(){
			if( m_psz != m_szBuffer && !m_isSameType){
				delete [] m_psz;
			}
		}
		inline operator DescType* () const throw(){
			return const_cast<DescType*>(m_psz);
		}
		inline DescType* c_str() const throw(){
			return const_cast<DescType*>(m_psz);
		}
		inline size_t size() const{
			if(m_length == -1){
				const_cast<string_cast*>(this)->m_length = (size_t)wcslen(m_psz);
			}
			return m_length;
		}
	private:
		size_t	m_length;
		DescType*	m_psz;
		bool		m_isSameType;
		DescType	m_szBuffer[t_nBufferLength];
	private:
		void init(custr psz,size_t count) {
			if (psz == NULL){
				m_psz = NULL;
				return;
			}
			if( count >= t_nBufferLength ){
				m_psz = new wchar_t[count+1];
			}
			m_length = UTF8ToUNICODE(psz,count,m_psz,count);
			m_psz[m_length] = 0;
		}
		void init(castr psz,size_t count) {
			if (psz == NULL){
				m_psz = NULL;
				return;
			}
			if( count >= t_nBufferLength ){
				m_psz = new wchar_t[count+1];
			}
			m_length = ANSIToUNICODE(psz,count,m_psz,count);
			m_psz[m_length] = 0;
		}
		explicit string_cast( const string_cast& ) throw();
		string_cast& operator=( const string_cast& ) throw();
	};

//------------------------------------------------------------------------------
//to char*
//------------------------------------------------------------------------------
#ifdef DNC_OLDVC
	template<>
	class string_cast<achar>{
		enum{t_nBufferLength =  128};
#else
	template<int t_nBufferLength>
	class string_cast<achar,t_nBufferLength>{
#endif
	public:
		typedef wchar SrcType;
		typedef achar DescType;
	public:
		//wchar_t* to char*
		explicit string_cast(cwstr psz,size_t count = -1)  :
			m_psz( m_szBuffer ),
			m_isSameType(false)
		{
			init(psz,count == -1 ? wcslen(psz) : count);
		}
		explicit string_cast(wstr psz,size_t count = -1)  :
			m_psz( m_szBuffer ),
			m_isSameType(false)
		{
			init(psz,count == -1 ? wcslen(psz) : count);
		}
        template<class Char,class Traits,class Allocator>
        explicit string_cast(const std::basic_string<Char,Traits,Allocator> &str,size_t count)  :
			m_psz( m_szBuffer ),
			m_isSameType(false)
		{
			init(str.data(),count);
		}
        template<class Char,class Traits,class Allocator>
        explicit string_cast(const std::basic_string<Char,Traits,Allocator> &str)  :
			m_psz( m_szBuffer ),
			m_isSameType(false)
		{
			init(str.data(),str.size());

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产欧美日美国产精品| 日本一区二区三区高清不卡| 欧美成人video| 亚洲视频一区在线| 久久99热狠狠色一区二区| 91美女在线看| 欧美激情一区二区三区蜜桃视频| 日韩在线一二三区| 色香蕉成人二区免费| 国产日产欧美一区| 免费一区二区视频| 欧美亚洲动漫制服丝袜| 日韩理论电影院| 国产高清在线观看免费不卡| 欧美一级二级三级乱码| 亚洲成人动漫av| 97久久精品人人澡人人爽| 久久一留热品黄| 久久99精品一区二区三区| 7777精品伊人久久久大香线蕉| 亚洲精品国产精华液| 91免费小视频| 最新国产精品久久精品| 成人美女视频在线看| 国产蜜臀av在线一区二区三区| 精品一区二区三区视频| 日韩一区二区三区四区 | 国产精品国产a| 国产在线精品一区在线观看麻豆| 欧美一级午夜免费电影| 欧美视频一区二区三区在线观看| 亚洲色欲色欲www| 国产成人8x视频一区二区 | 国产精品久久久久久久久搜平片 | 天堂一区二区在线| 欧美日韩精品一区二区三区| 亚洲一区二区美女| 欧美日本视频在线| 日韩成人免费看| 日韩欧美一级在线播放| 国产一区高清在线| 国产视频一区在线观看| 成人激情电影免费在线观看| 国产精品久久久爽爽爽麻豆色哟哟| 成人自拍视频在线| 亚洲欧洲无码一区二区三区| 色婷婷av一区二区| 偷拍一区二区三区| 久久众筹精品私拍模特| 国产 欧美在线| 亚洲天天做日日做天天谢日日欢 | 2017欧美狠狠色| 国产成人高清在线| 亚洲免费av观看| 欧美一区二区在线观看| 国产成人精品免费一区二区| 综合激情网...| 欧美日韩日日夜夜| 国产在线一区观看| 日韩毛片精品高清免费| 欧美精品vⅰdeose4hd| 国产一区二区精品在线观看| 亚洲视频小说图片| 欧美一级一级性生活免费录像| 成人影视亚洲图片在线| 亚洲成人免费av| 欧美xxxx在线观看| av色综合久久天堂av综合| 日韩激情av在线| 国产欧美日韩中文久久| 欧美三级蜜桃2在线观看| 国产成人精品影视| 日韩中文字幕91| 成人欧美一区二区三区小说| 日韩三级精品电影久久久| 色综合天天综合网天天看片| 精品中文av资源站在线观看| 亚洲人吸女人奶水| 久久综合色综合88| 777奇米四色成人影色区| zzijzzij亚洲日本少妇熟睡| 免费观看在线综合| 亚洲欧美另类久久久精品2019| 精品毛片乱码1区2区3区| 欧美性淫爽ww久久久久无| 国产成人aaa| 国内久久精品视频| 免费欧美日韩国产三级电影| 亚洲天堂a在线| 欧美激情中文字幕一区二区| 欧美成人性福生活免费看| 在线观看视频一区二区欧美日韩| 国产激情精品久久久第一区二区| 三级一区在线视频先锋| 亚洲女人的天堂| 日本一区二区三区电影| 久久人人97超碰com| 91麻豆精品国产91久久久久 | 不卡av电影在线播放| 麻豆精品一区二区| 午夜伦理一区二区| 亚洲一区二区av电影| 亚洲欧美视频在线观看| 一色屋精品亚洲香蕉网站| 日本一区二区三区高清不卡| 久久精品在线观看| 久久免费精品国产久精品久久久久| 67194成人在线观看| 欧美揉bbbbb揉bbbbb| 在线一区二区三区| 色久优优欧美色久优优| www.日韩av| 色综合久久久久综合99| 99久久精品国产网站| 99久久夜色精品国产网站| 白白色 亚洲乱淫| 91美女片黄在线观看91美女| 色婷婷久久久综合中文字幕| 欧亚一区二区三区| 欧美视频在线观看一区二区| 欧美高清dvd| 精品国产乱码91久久久久久网站| 日韩一二三四区| 欧美mv和日韩mv国产网站| 久久久精品tv| 中文字幕中文字幕在线一区| 中文字幕亚洲电影| 亚洲国产精品久久久久秋霞影院| 亚洲国产sm捆绑调教视频| 日韩成人免费电影| 久久精品国产99国产| 国产乱色国产精品免费视频| www.在线欧美| 欧美日韩国产美| 精品久久久三级丝袜| 国产偷国产偷亚洲高清人白洁| 中文字幕在线视频一区| 亚洲综合区在线| 天堂va蜜桃一区二区三区| 久久99久久99| 91亚洲精品久久久蜜桃网站| 在线成人av网站| 欧美国产精品专区| 亚洲观看高清完整版在线观看| 激情亚洲综合在线| 91小视频在线观看| 欧美大黄免费观看| 国产精品毛片无遮挡高清| 亚洲午夜久久久久中文字幕久| 免费高清成人在线| 91亚洲国产成人精品一区二三| 91精品国产91久久综合桃花| 国产欧美精品在线观看| 亚洲成人免费视| 成人av免费在线播放| 制服丝袜成人动漫| 亚洲欧美一区二区视频| 日本不卡在线视频| 91在线云播放| 欧美tickling网站挠脚心| 伊人夜夜躁av伊人久久| 精品伊人久久久久7777人| 91丨九色丨蝌蚪丨老版| 26uuu久久综合| 亚洲国产精品久久不卡毛片| 成人午夜私人影院| 91麻豆精品国产91久久久更新时间| 国产精品乱人伦一区二区| 蜜桃av一区二区三区| 色偷偷88欧美精品久久久| 久久免费国产精品| 蜜桃久久久久久久| 欧洲国内综合视频| 一区视频在线播放| 国产精品1024| 26uuu精品一区二区三区四区在线| 亚洲综合成人在线| 91视频免费观看| 国产精品视频看| 国产成人精品亚洲777人妖| 欧美丰满美乳xxx高潮www| 亚洲一区二区三区在线播放| 99久久免费精品高清特色大片| 久久综合九色综合欧美98| 麻豆91免费观看| 91精品国产综合久久久久久久久久 | 亚洲精品免费在线观看| 国产精品456露脸| 精品国产一区二区三区久久久蜜月 | 成人激情动漫在线观看| 国产亚洲自拍一区| 国产一区二区在线看| 欧美成人r级一区二区三区| 蜜乳av一区二区| 日韩精品一区二区三区四区| 蜜桃视频在线一区| 精品av久久707| 国产精品综合视频| 亚洲国产经典视频| 成人黄动漫网站免费app|