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

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

?? mfcstringimpl.h

?? VB6 has two very useful string functions: Join and Split. This code implements Join and Split functi
?? H
字號:
//    MFCStringImpl.h
//
//////////////////////////////////////////////////////////////////////////////

#if !defined(MFCSTRINGIMPL_H__CE71ED33_972C_11d0_9733_46963F000000__INCLUDED_)
#define MFCSTRINGIMPL__CE71ED33_972C_11d0_9733_46963F000000__INCLUDED_

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000

//////////////////////////////////////////////////////////////////////////////

#include <algorithm>
#include <TCHAR.h>
#include <stdarg.h>
#include "MFCString.h"

#pragma warning(disable:4786) // Disable warning for names > 256

//////////////////////////////////////////////////////////////////////////////

  
namespace NotMFC
{

///////////////////////////////////////////////////////////////////////////
// Constructors
///////////////////////////////////////////////////////////////////////////

   template<typename T> inline CStringT<T>::CStringT()
      :  std::basic_string<T>() {}

   template<typename T> inline CStringT<T>::CStringT(const CStringT& strInput)
      :  std::basic_string<T>(strInput) {}

   template<typename T> inline CStringT<T>::CStringT(const std::basic_string<T>& strInput)
      :  std::basic_string<T>(strInput) {}

   template<typename T> inline CStringT<T>::CStringT(const T* strInput)
      :  std::basic_string<T>(strInput) {}

   template<typename T> inline CStringT<T>::CStringT(T ch, int nRepeat /* = 1*/)
      :  std::basic_string<T>(nRepeat, ch) {}

///////////////////////////////////////////////////////////////////////////
// The string as an array
///////////////////////////////////////////////////////////////////////////

   template<typename T> inline int CStringT<T>::GetLength() const
   {
      return length();
   };

   template<typename T> inline bool CStringT<T>::IsEmpty() const
   {
      return empty();
   };

   template<typename T> inline void CStringT<T>::Empty()
   {
      erase();
      return;
   };

   template<typename T> inline T CStringT<T>::GetAt(int nIndex) const
   {
      return at(nIndex);
   };

   template<typename T> inline void CStringT<T>::SetAt(int nIndex, T ch)
   {
      at(nIndex) = ch;
      return;
   };

///////////////////////////////////////////////////////////////////////////
// Comparison
///////////////////////////////////////////////////////////////////////////

   template<typename T> inline int CStringT<T>::Compare(const T* psz) const
   {
      return compare(psz);
   };

   template<typename T> inline int CStringT<T>::Compare(const CStringT& str) const
   {
      return compare(str);
   };

   template<typename T> inline int CStringT<T>::CompareNoCase(const T* psz) const
   {
      return _tcsicmp(c_str(), psz);
   };

   template<typename T> inline int CStringT<T>::CompareNoCase(const CStringT& str) const
   {
      return _tcsicmp(c_str(), str.c_str());
   };

   template<typename T> inline int CStringT<T>::Collate(const T* psz) const
   {
      return _tcscoll(c_str(), psz);
   };

   template<typename T> inline int CStringT<T>::Collate(const CStringT& str) const
   {
      return _tcscoll(c_str(), str.c_str());
   };

///////////////////////////////////////////////////////////////////////////
// Extraction
///////////////////////////////////////////////////////////////////////////

   template<typename T> inline CStringT<T> CStringT<T>::Mid(int nFirst) const
   {
      return substr(nFirst);
   };

   template<typename T> inline CStringT<T> CStringT<T>::Mid(int nFirst, int nCount) const
   {
      return substr(nFirst, nCount);
   };

   template<typename T> inline CStringT<T> CStringT<T>::Left(int nCount) const
   {
      return substr(0, nCount);
   };

   template<typename T> inline CStringT<T> CStringT<T>::Right(int nCount) const
   {
      return substr(length() - nCount, nCount);
   };

   template<typename T> inline CStringT<T> CStringT<T>::SpanIncluding(const T* pszCharSet) const
   {
      return substr(0, find_first_not_of(pszCharSet));
   };

   template<typename T> inline CStringT<T> CStringT<T>::SpanExcluding(const T* pszCharSet) const
   {
      return substr(0, find_first_of(pszCharSet));
   };

///////////////////////////////////////////////////////////////////////////
// Other Conversions
///////////////////////////////////////////////////////////////////////////

   template<typename T> inline void CStringT<T>::MakeUpper()
   {
      T* pszTemp = new T[length() + 1];
      _tcscpy(pszTemp, c_str());
      _tcsupr(pszTemp);
      *this = pszTemp;
      delete [] pszTemp;
      // std::for_each(begin(), end(), _totupper);
      // Can't do this because toupper alters the iterator?
      return;
   };

   template<typename T> inline void CStringT<T>::MakeLower()
   {
      T* pszTemp = new T[length() + 1];
      _tcscpy(pszTemp, c_str());
      _tcslwr(pszTemp);
      *this = pszTemp;
      delete [] pszTemp;
      return;
   };

   template<typename T> inline void CStringT<T>::MakeReverse()
   {
      std::reverse(begin(), end());
      return;
   };

   template<typename T> inline void CStringT<T>::TrimLeft()
   {
	   while (_istspace(at(0)))
		   erase(0, 1);
      return;
   };

   template<typename T> inline void CStringT<T>::TrimRight()
   {
	   while (_istspace( at(length() - 1) ))
		   erase(length() - 1, 1);
      return;
   };

   template<typename T> inline void CStringT<T>::Format(const T* pszFormat, ... )
   {
      // Doesn't have all the features of CString::Format()
      va_list vl;
      va_start(vl, pszFormat);

      T* pszTemp = NULL;
      int nBufferSize = 0;
      int nRetVal = -1;

      do
      {
         // Increment the buffer 100 characters at a time
         // I'm not sure whether this is robust!
         nBufferSize += 100;
         delete [] pszTemp;
         pszTemp = new T [nBufferSize];
         nRetVal = _vstprintf(pszTemp, pszFormat, vl);
      } while (nRetVal < 0);

      *this = pszTemp;
      delete [] pszTemp;

      va_end(vl);
      return;
   };

///////////////////////////////////////////////////////////////////////////
// Searching
///////////////////////////////////////////////////////////////////////////

   template<typename T> inline int CStringT<T>::Find(const T& ch) const
   {
      // npos == -1 in this implementation, but it might not always be, so this is
      // a bit dodgy.
      return find(ch);
   };

   template<typename T> inline int CStringT<T>::Find(const T* psz) const
   {
      return find(psz);
   };

   template<typename T> inline int CStringT<T>::Find(const T* psz,long nFirst) const
   {
      int found = Mid(nFirst).find(psz);
      if(found == -1) return -1;
      else 
        return found + nFirst;
   };

   template<typename T> inline int CStringT<T>::ReverseFind(const T& ch) const
   {
      return rfind(ch);
   };

   template<typename T> inline int CStringT<T>::FindOneOf(const T* psz) const
   {
      return find_first_of(psz);
   };

///////////////////////////////////////////////////////////////////////////
// Operators
///////////////////////////////////////////////////////////////////////////

   template<typename T> inline CStringT<T>::operator const T*() const
   { return c_str(); };

   template<typename T> inline T CStringT<T>::operator[](int nIndex) const
   { return at(nIndex); };

template<typename T> inline bool operator==(const CStringT<T>& s1, const CStringT<T>& s2)
	{ return s1.compare(s2) == 0; }
template<typename T> inline bool operator==(const CStringT<T>& s1, const T* s2)
	{ return s1.compare(s2) == 0; }
template<typename T> inline bool operator==(const T* s1, const CStringT<T>& s2)
	{ return s2.compare(s1) == 0; }

template<typename T> inline bool operator!=(const CStringT<T>& s1, const CStringT<T>& s2)
	{ return s1.compare(s2) != 0; }
template<typename T> inline bool operator!=(const CStringT<T>& s1, const T* s2)
	{ return s1.compare(s2) != 0; }
template<typename T> inline bool operator!=(const T* s1, const CStringT<T>& s2)
	{ return s2.compare(s1) != 0; }

template<typename T> inline bool operator<(const CStringT<T>& s1, const CStringT<T>& s2)
	{ return s1.compare(s2) < 0; }
template<typename T> inline bool operator<(const CStringT<T>& s1, const T* s2)
	{ return s1.compare(s2) < 0; }
template<typename T> inline bool operator<(const T* s1, const CStringT<T>& s2)
	{ return s2.compare(s1) > 0; }

template<typename T> inline bool operator>(const CStringT<T>& s1, const CStringT<T>& s2)
	{ return s1.compare(s2) > 0; }
template<typename T> inline bool operator>(const CStringT<T>& s1, const T* s2)
	{ return s1.compare(s2) > 0; }
template<typename T> inline bool operator>(const T* s1, const CStringT<T>& s2)
	{ return s2.compare(s1) < 0; }

template<typename T> inline bool operator<=(const CStringT<T>& s1, const CStringT<T>& s2)
	{ return s1.compare(s2) <= 0; }
template<typename T> inline bool operator<=(const CStringT<T>& s1, const T* s2)
	{ return s1.compare(s2) <= 0; }
template<typename T> inline bool operator<=(const T* s1, const CStringT<T>& s2)
	{ return s2.compare(s1) >= 0; }

template<typename T> inline bool operator>=(const CStringT<T>& s1, const CStringT<T>& s2)
	{ return s1.compare(s2) >= 0; }
template<typename T> inline bool operator>=(const CStringT<T>& s1, const T* s2)
	{ return s1.compare(s2) >= 0; }
template<typename T> inline bool operator>=(const T* s1, const CStringT<T>& s2)
	{ return s2.compare(s1) <= 0; }



}; // namespace NotMFC

//////////////////////////////////////////////////////////////////////////////

#pragma warning(default:4786) // Enable warning for names > 256

#endif // !defined(MFCSTRINGIMPL_H__CE71ED33_972C_11d0_9733_46963F000000__INCLUDED_)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品夜色噜噜亚洲aⅴ| 国内成+人亚洲+欧美+综合在线| 在线播放日韩导航| 欧美视频中文字幕| 日本丶国产丶欧美色综合| 懂色中文一区二区在线播放| 久久91精品国产91久久小草| 日本亚洲免费观看| 精品一区二区综合| 国产高清亚洲一区| 99视频热这里只有精品免费| 成人av集中营| 一本到高清视频免费精品| 色综合色综合色综合| 色综合久久天天综合网| 欧美综合视频在线观看| 欧美日韩你懂得| 日韩久久精品一区| 国产亚洲女人久久久久毛片| 中文字幕精品综合| 亚洲欧美区自拍先锋| 亚洲午夜影视影院在线观看| 午夜精品福利久久久| 蜜臀av亚洲一区中文字幕| 国产综合久久久久影院| 床上的激情91.| 欧美性一级生活| 欧美videossexotv100| 国产欧美日韩激情| 一区二区三区视频在线看| 午夜精品久久久久影视| 蜜臀a∨国产成人精品| 国产白丝网站精品污在线入口| 岛国精品在线观看| 欧美乱妇15p| 国产片一区二区三区| 亚洲美女一区二区三区| 麻豆精品国产传媒mv男同| 成人免费黄色大片| 欧美另类videos死尸| 欧美激情综合五月色丁香| 亚洲妇女屁股眼交7| 国产精品一区二区在线看| 91麻豆高清视频| 日韩精品专区在线影院重磅| 一区二区三区四区中文字幕| 午夜久久电影网| 成人看片黄a免费看在线| 欧美日韩高清一区二区不卡| 久久九九影视网| 日韩经典中文字幕一区| 成人av影院在线| 欧美电影免费观看高清完整版在| 亚洲欧洲av在线| 国产精品456| 欧美一区二区大片| 亚洲乱码中文字幕综合| 国产精品一品二品| 欧美一区二区福利在线| 亚洲国产另类av| www.视频一区| 久久久久久夜精品精品免费| 日韩成人午夜精品| 91久久香蕉国产日韩欧美9色| 欧美国产日韩精品免费观看| 久久国产精品露脸对白| 欧美做爰猛烈大尺度电影无法无天| 日本一区二区视频在线观看| 久久99久久精品欧美| 欧美日韩精品一区二区三区蜜桃 | 日韩制服丝袜av| 日本韩国欧美在线| 成人免费在线播放视频| 懂色av一区二区三区免费观看| 日韩视频免费观看高清完整版在线观看| 亚洲美女视频在线观看| 99re视频这里只有精品| 国产精品入口麻豆九色| 成人app软件下载大全免费| 亚洲四区在线观看| 91在线国内视频| 中文字幕视频一区| 一本色道久久加勒比精品| 日韩毛片在线免费观看| 色中色一区二区| 一区二区激情小说| 欧美日韩精品欧美日韩精品一综合| 亚洲黄一区二区三区| 欧美影视一区在线| 亚洲成av人片在www色猫咪| 欧美日韩国产精品自在自线| 三级影片在线观看欧美日韩一区二区| 欧美日韩午夜在线| 日韩综合在线视频| 精品国产凹凸成av人网站| 国产精品一区二区免费不卡 | 亚洲 欧美综合在线网络| 欧美日韩国产精品自在自线| 日本成人在线一区| 国产亚洲综合性久久久影院| 国产成人精品亚洲日本在线桃色| 欧美国产禁国产网站cc| 色婷婷久久久亚洲一区二区三区| 亚洲伊人伊色伊影伊综合网| 在线综合视频播放| 国产一区二区三区不卡在线观看 | 国产精品视频一二| 欧美亚洲综合另类| 久久精品国产久精国产| 国产精品麻豆视频| 7777精品伊人久久久大香线蕉的| 免费在线观看精品| 综合中文字幕亚洲| 日韩欧美激情四射| av一区二区三区| 青草av.久久免费一区| 亚洲国产精品二十页| 欧美日韩国产天堂| 成人一区在线看| 日韩成人免费电影| 亚洲精品v日韩精品| 日韩欧美国产三级| 欧美色倩网站大全免费| 国产不卡视频在线播放| 丝瓜av网站精品一区二区| 国产精品成人一区二区艾草| 欧美高清性hdvideosex| 国产成人精品一区二区三区网站观看| 亚洲另类一区二区| 日韩一区二区三区三四区视频在线观看 | 欧美视频在线播放| 国产资源精品在线观看| 亚洲欧美日韩中文字幕一区二区三区| 日韩久久免费av| 色综合一区二区三区| 青青草原综合久久大伊人精品优势 | 亚洲免费观看在线视频| 日韩欧美亚洲国产另类| 97久久人人超碰| 国产v综合v亚洲欧| 奇米精品一区二区三区在线观看 | 国产成人aaa| 亚洲va韩国va欧美va精品| 亚洲欧洲精品一区二区三区 | 亚洲h精品动漫在线观看| 国产欧美日韩另类一区| 日韩欧美亚洲国产精品字幕久久久 | 免费一级片91| 亚洲h精品动漫在线观看| 国产精品灌醉下药二区| 日韩欧美在线网站| 欧洲av在线精品| 欧美日韩一区二区不卡| 99国产精品99久久久久久| 国产一区二区三区蝌蚪| 午夜成人在线视频| 免费一级片91| 日韩vs国产vs欧美| 亚洲婷婷综合色高清在线| 日韩美女主播在线视频一区二区三区| 日本高清视频一区二区| 99精品1区2区| 97精品超碰一区二区三区| 国产一区激情在线| 美美哒免费高清在线观看视频一区二区 | 欧美日韩视频在线观看一区二区三区| 不卡的看片网站| 国产成人av电影| 国产精品综合一区二区三区| 久久99精品视频| 久久99这里只有精品| 午夜不卡在线视频| 性久久久久久久久久久久| 亚洲自拍另类综合| 日韩精品电影一区亚洲| 亚洲3atv精品一区二区三区| 亚洲国产毛片aaaaa无费看| 一区二区三区四区高清精品免费观看| 国产精品视频九色porn| 亚洲一区二区在线观看视频| 亚洲黄一区二区三区| 午夜伊人狠狠久久| 日韩和欧美一区二区| 国产综合成人久久大片91| 大桥未久av一区二区三区中文| 成人午夜碰碰视频| 一本久道久久综合中文字幕| 99综合影院在线| 欧美不卡123| 日本一二三不卡| 亚洲欧美国产77777| 亚洲国产成人av好男人在线观看| 亚洲国产视频一区| 蜜桃久久久久久| 国产在线视视频有精品| 94色蜜桃网一区二区三区| 精品视频在线免费观看| 精品欧美一区二区久久| 一区二区三区色| 久久99热国产|