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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mystring.cpp

?? Intel開發(fā)的IPP庫的應(yīng)用例程
?? CPP
字號:
/*
//
//               INTEL CORPORATION PROPRIETARY INFORMATION
//  This software is supplied under the terms of a license agreement or
//  nondisclosure agreement with Intel Corporation and may not be copied
//  or disclosed except in accordance with the terms of that agreement.
//        Copyright(c) 1999-2007 Intel Corporation. All Rights Reserved.
//
*/

// MyString.cpp: implementation of the CMyString class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "demo.h"
#include "MyString.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////


int CMyString::FindNameIndex() const
{
    int ind1 = ReverseFind('/');
    int ind2 = ReverseFind('\\');
    int index;
    if (ind1>=0 && ind2>=0) index = ind1 > ind2 ? ind1 : ind2;
    else if (ind1>=0)       index = ind1;
    else if (ind2>=0)       index = ind2;
    else return 0;
    return index + 1;
}

CString CMyString::GetDrive() const
{
    if (IsEmpty()) return _T("");
    int index = (':');
    if (index < 0) return _T("");
    return Left(index+1);
}

CString CMyString::GetDir() const
{
    if (IsEmpty()) return _T("");
    return Left(FindNameIndex());
}

CString CMyString::GetName() const
{
    if (IsEmpty()) return _T("");
    return Mid(FindNameIndex());
}

CString CMyString::GetExt() const
{
    if (IsEmpty()) return _T("");
    int index = ReverseFind('.');
    if (index < 0) return _T("");
    else           return Mid(index);
}

CString CMyString::GetTitle() const
{
    if (IsEmpty()) return _T("");
    CString name = GetName();
    int index = name.ReverseFind('.');
    if (index < 0) return name;
    else           return name.Left(index);
}

CString CMyString::GetExceptExt() const
{
    if (IsEmpty()) return _T("");
    int index = ReverseFind('.');
    if (index < 0) return *this;
    else           return Left(index);
}

//////////////////////////////////////////////////////////////////////////////
//   CMyString Parse
//////////////////////////////////////////////////////////////////////////////

class CParseString : CMyString {
public:
   CParseString(const CMyString& str) : 
      CMyString(str), m_CurIndex(-1), m_Quote(-1) {}
   virtual ~CParseString() {}
   int GetParseNum(CString separ);
   int Parse(CStringArray& array, CString separ);
   int Parse2(CString& item1, CString& item2, CString separ);
   int ParseRev2(CString& item1, CString& item2, CString separ);

protected:
   void Init(CString separ);
   void InitRev(CString separ);
   BOOL IsSeparator(int index);
   void RemoveQuote(CString& word);
   BOOL GetNextWord(CString& word);
   BOOL GetPrevWord(CString& word);
   void GetTail(CString& word);
   void GetHead(CString& word);

   CString m_Separ;
   int     m_CurIndex;
   int     m_Quote;
};

int CParseString::GetParseNum(CString separ)
{
    Init(separ);
    CString word;
    int num = 0;
    while (GetNextWord(word)) num++;
    return num;
}

int CParseString::Parse(CStringArray& array, CString separ)
{
   Init(separ);
   CString word;
   array.RemoveAll();
   while (GetNextWord(word)) array.Add(word);
   return (int)array.GetSize();
}

int CParseString::Parse2(CString& item1, CString& item2, CString separ)
{
    Init(separ);
    GetNextWord(item1);
    GetTail(item2);
    return (!item1.IsEmpty()) + (!item2.IsEmpty());
}

int CParseString::ParseRev2(CString& item1, CString& item2, CString separ)
{
    InitRev(separ);
    GetPrevWord(item2);
    GetHead(item1);
    return (!item1.IsEmpty()) + (!item2.IsEmpty());
}

void CParseString::Init(CString separ)
{
    m_CurIndex  = 0;
    m_Separ = separ;
    if (separ.Find('"') >= 0)
        m_Quote = -100;
    else
        m_Quote = -1;
}

void CParseString::InitRev(CString separ)
{
    Init(separ);
    m_CurIndex  = GetLength() - 1;
}

BOOL CParseString::IsSeparator(int index)
{
    _TCHAR symb = GetAt(index);
    if (m_Quote >= 0) {
        if (symb == '"') {
            if (m_Quote == index - 1)
                m_Quote = 0;
            else
                m_Quote = -1;        
        }
        return FALSE;
    } else if (m_Quote == -1 && symb == '"') {
        m_Quote = index;
        return FALSE;
    } else {
        return m_Separ.Find(symb) >= 0;
    }
}

void CParseString::RemoveQuote(CString& word)
{
    if (m_Quote < -1) return;
    int index;
    while (index = word.Find(_T("\"\"")) >= 0)
        word = word.Left(index) + word.Mid(index+1);
}

BOOL CParseString::GetNextWord(CString& word)
{
    int i, j;
    word.Empty();
    for (i = m_CurIndex; i < GetLength() && IsSeparator(i); i++);
    if (i >= GetLength()) return FALSE;
    for (j = i; j < GetLength() && !IsSeparator(j); j++) ;
    word = Mid(i, j-i);
    RemoveQuote(word);
    m_CurIndex = j;
    return TRUE;
}

BOOL CParseString::GetPrevWord(CString& word)
{
    word.Empty();
    int i, j;
    for (i = m_CurIndex; i >= 0 && IsSeparator(i); i--);
    if (i < 0) return FALSE;
    for (j = i; j >= 0 && !IsSeparator(j); j--) ;
    word = Mid(j, i-j);
    RemoveQuote(word);
    m_CurIndex = j;
    return TRUE;
}

void CParseString::GetTail(CString& word)
{
    word.Empty();

    int i;
    for (i = m_CurIndex; i < GetLength() && IsSeparator(i); i++);
    if (i < GetLength()) word = Mid(i);
}

void CParseString::GetHead(CString& word)
{
    word.Empty();
    int i;
    for (i = m_CurIndex; i >= 0 && IsSeparator(i); i--);
    if (i >= 0) word = Left(i + 1);
}

int CMyString::GetParseNum(CString separ) const
{
    CParseString prs(*this);
    return prs.GetParseNum(separ);
}

int CMyString::Parse(CStringArray& array, CString separ) const
{
   CParseString prs(*this);
   return prs.Parse(array,separ);
}

int CMyString::Parse2(CString& item1, CString& item2, CString separ) const
{
   CParseString prs(*this);
   return prs.Parse2(item1,item2,separ);
}

int CMyString::ParseRev2(CString& item1, CString& item2, CString separ) const
{
   CParseString prs(*this);
   return prs.ParseRev2(item1,item2,separ);
}

//////////////////////////////////////////////////////////////////////////////
//   CMyString conversion from  Flag & Enum
//////////////////////////////////////////////////////////////////////////////

static bool fitString(CMyString str, CMyString sample, int shift)
{
   str.MakeLower();
   sample.MakeLower();
   CMyString shiftSample = sample.Mid(shift);
   if (shiftSample.Find(str) == 0) return true;
   if (sample.Find(str) == 0) return true;
   return false;
}

CMyString CMyString::FlagString(int val, int* valList, CMyString* strList, int num)
{
   CMyString dst;
   for (int i=0; i<num; i++) {
      if (val & valList[i]) {
         if (!dst.IsEmpty()) dst += _T("|");
         dst += strList[i];
      }
   }
   if (dst.IsEmpty()) dst << (int)val; 
   return dst;
}

CMyString CMyString::EnumString(int val, int* valList, CMyString* strList, int num)
{
   for (int i=0; i<num; i++) {
      if (val == valList[i]) return strList[i];
   }
   CMyString dst; 
   dst << (int)val; 
   return dst;
}

//////////////////////////////////////////////////////////////////////////////
//   CMyString << operators
//////////////////////////////////////////////////////////////////////////////

static Ipp64sc sc8to64 (Ipp8sc  src) 
{Ipp64sc dst; dst.re = (Ipp64s)src.re; dst.im = (Ipp64s)src.im; return dst;}
static Ipp64sc sc16to64(Ipp16sc src) 
{Ipp64sc dst; dst.re = (Ipp64s)src.re; dst.im = (Ipp64s)src.im; return dst;}
static Ipp64sc sc32to64(Ipp32sc src) 
{Ipp64sc dst; dst.re = (Ipp64s)src.re; dst.im = (Ipp64s)src.im; return dst;}
static Ipp64sc fc32to64(Ipp32fc src) 
{Ipp64sc dst; dst.re = (Ipp64s)src.re; dst.im = (Ipp64s)src.im; return dst;}
static Ipp8sc  sc64to8 (Ipp64sc src) 
{Ipp8sc  dst; dst.re = (Ipp8s )src.re; dst.im = (Ipp8s )src.im; return dst;}
static Ipp16sc sc64to16(Ipp64sc src) 
{Ipp16sc dst; dst.re = (Ipp16s)src.re; dst.im = (Ipp16s)src.im; return dst;}
static Ipp32sc sc64to32(Ipp64sc src) 
{Ipp32sc dst; dst.re = (Ipp32s)src.re; dst.im = (Ipp32s)src.im; return dst;}
static Ipp32fc fc64to32(Ipp64fc src) 
{Ipp32fc dst; dst.re = (Ipp32f)src.re; dst.im = (Ipp32f)src.im; return dst;}

CMyString& operator << (CMyString& str, CMyString val) 
{ str += val; return str;}

CMyString& operator << (CMyString& str, const _TCHAR* val) 
{ str += val; return str;}

CMyString& operator << (CMyString& str, _TCHAR val) 
{ str += val; return str;}

CMyString& operator << (CMyString& str, CString val) 
{ str += val; return str;}

CMyString& operator << (CMyString& str, bool val) {
   str += (val ? _T("true") : _T("false"));
   return str;
}

CMyString& operator << (CMyString& str, double val) {
   _TCHAR buf[32];
   _stprintf(buf,_T("%.3g"),val);
   str += buf;
   return str;
}

CMyString& operator << (CMyString& str, float val) { return str << (double)val;}

CMyString& operator << (CMyString& str, Ipp64s val) {
   _TCHAR buf[32];
   _stprintf( buf, _T("%I64d"), val );
   str += buf;
   return str;
}

CMyString& operator << (CMyString& str, Ipp8u val) { return str << (Ipp64s)val;}
CMyString& operator << (CMyString& str, Ipp8s val) { return str << (Ipp64s)val;}
#ifndef UNICODE
CMyString& operator << (CMyString& str, Ipp16u val) { return str << (Ipp64s)val;}
#endif
CMyString& operator << (CMyString& str, Ipp16s val) { return str << (Ipp64s)val;}
CMyString& operator << (CMyString& str, Ipp32u val) { return str << (Ipp64s)val;}
CMyString& operator << (CMyString& str, Ipp32s val) { return str << (Ipp64s)val;}

CMyString& operator << (CMyString& str, Ipp64sc val) {
   _TCHAR buf[64];
   CMyString sRe, sIm;
   sRe << val.re;
   sIm << val.im;
   _stprintf(buf,_T("{%s,%s}"),(LPCTSTR)sRe,(LPCTSTR)sIm);
   str += buf;
   return str;
}

CMyString& operator << (CMyString& str, Ipp8sc val) { return str << sc8to64(val);}
CMyString& operator << (CMyString& str, Ipp16sc val) { return str << sc16to64(val);}
CMyString& operator << (CMyString& str, Ipp32sc val) { return str << sc32to64(val);}

CMyString& operator << (CMyString& str, Ipp64fc val) {
   _TCHAR buf[64];
   CMyString sRe, sIm;
   sRe << val.re;
   sIm << val.im;
   _stprintf(buf,_T("{%s,%s}"),(LPCTSTR)sRe,(LPCTSTR)sIm);
   str += buf;
   return str;
}

CMyString& operator << (CMyString& str, Ipp32fc val) { return str << fc32to64(val);}

static int RndNum = 2;
static CMyString RndStr[] = {
   _T("zero"), _T("near")};
static IppRoundMode RndVal[] = {
   ippRndZero, ippRndNear};
CMyString& operator << (CMyString& str, IppRoundMode val) {
   str += ENUM_STRING(Rnd,val);
   return str;
}

static int HintNum = 3;
static CMyString HintStr[] = {
   _T("none"), _T("fast"), _T("accurate")};
static IppHintAlgorithm HintVal[] = {
   ippAlgHintNone, ippAlgHintFast, ippAlgHintAccurate};
CMyString& operator << (CMyString& str, IppHintAlgorithm val) {
   str += ENUM_STRING(Hint,val);
   return str;
}

static int FlagNum = 4;
static CMyString FlagStr[] = {
   _T("divFwdByN"), _T("divInvByN"), 
   _T("divBySqrtN"), _T("nodivByAny"),};
static EIppFlag FlagVal[] = {
   (EIppFlag)IPP_FFT_DIV_FWD_BY_N, (EIppFlag)IPP_FFT_DIV_INV_BY_N, 
   (EIppFlag)IPP_FFT_DIV_BY_SQRTN, (EIppFlag)IPP_FFT_NODIV_BY_ANY,};
CMyString& operator << (CMyString& str, EIppFlag val) {
   str += FLAG_STRING(Flag,val);
   return str;
}

static int CmpOpNum = 5;
static CMyString CmpOpStr[] = {
   _T("Less"), _T("LessEq"), _T("Eq"), _T("GreaterEq"), _T("Greater")};
static IppCmpOp CmpOpVal[] = {
   ippCmpLess, ippCmpLessEq, ippCmpEq, ippCmpGreaterEq, ippCmpGreater};

CMyString& operator << (CMyString& str, IppCmpOp val) {
   str += ENUM_STRING(CmpOp,val);
   return str;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产主播一区二区| 东方aⅴ免费观看久久av| 久久亚洲一区二区三区四区| 色噜噜狠狠成人网p站| 九九国产精品视频| 亚洲老妇xxxxxx| 久久只精品国产| 欧美美女一区二区在线观看| 国产99久久久国产精品潘金网站| 久久午夜免费电影| 欧美日韩国产123区| av日韩在线网站| 国产福利视频一区二区三区| 青青草91视频| 午夜精品久久久久久久久久久 | 中文字幕亚洲区| 日韩免费看的电影| 欧美性视频一区二区三区| 丁香一区二区三区| 激情五月激情综合网| 日韩和欧美的一区| 亚洲午夜av在线| 亚洲欧美综合另类在线卡通| 久久影院午夜论| 久久夜色精品国产噜噜av| 欧美一区二区久久| 在线播放中文字幕一区| 91黄色免费观看| 97精品国产97久久久久久久久久久久| 激情图片小说一区| 久久精品国产网站| 日韩电影免费在线观看网站| 丝袜亚洲精品中文字幕一区| 亚洲国产精品欧美一二99| 香蕉久久一区二区不卡无毒影院 | 亚洲精品国产视频| 中文字幕一区二区三区乱码在线| 国产日韩精品一区二区浪潮av| 欧美一区二区三区色| 欧美人体做爰大胆视频| 欧美老女人在线| 色婷婷久久久久swag精品 | 久久综合999| 国产午夜亚洲精品理论片色戒| 久久久久9999亚洲精品| 精品成人a区在线观看| 久久只精品国产| 亚洲国产成人私人影院tom| 国产精品进线69影院| 亚洲欧美一区二区在线观看| 一区二区三区四区高清精品免费观看 | 国产精品电影一区二区| 日本一二三四高清不卡| 亚洲日本电影在线| 亚洲视频一二三| 亚洲一区在线播放| 蜜臀a∨国产成人精品| 久久99久久99精品免视看婷婷| 国产高清视频一区| www.日韩精品| 欧美色倩网站大全免费| 日韩一区二区三区av| 久久九九国产精品| 综合久久久久久| 日本美女一区二区| 国产精品自在在线| 色综合久久六月婷婷中文字幕| 欧美日韩一区二区三区在线看| 日韩欧美国产电影| 国产精品卡一卡二卡三| 亚洲aaa精品| 久久66热偷产精品| 91香蕉视频在线| 欧美一区三区四区| 国产精品天美传媒沈樵| 亚洲超碰97人人做人人爱| 国产在线麻豆精品观看| 99精品久久只有精品| 欧美一级在线观看| 亚洲欧洲av在线| 美腿丝袜亚洲色图| 色婷婷av一区二区| 精品久久久久久无| 伊人性伊人情综合网| 久88久久88久久久| 色八戒一区二区三区| 欧美zozo另类异族| 一区二区不卡在线播放| 国内精品在线播放| 欧美三级电影精品| 日本一区二区在线不卡| 舔着乳尖日韩一区| a级高清视频欧美日韩| 中文字幕第一区二区| 青青草原综合久久大伊人精品 | 日本中文一区二区三区| av中文字幕亚洲| 精品国产区一区| 亚洲国产人成综合网站| 丁香五精品蜜臀久久久久99网站| 欧美一卡二卡三卡四卡| 亚洲精品免费看| 国产精品一区三区| 日韩欧美一区二区视频| 亚洲综合一区二区| 成人在线视频首页| 精品国产91亚洲一区二区三区婷婷| 亚洲国产综合色| 91日韩一区二区三区| 国产日产欧美一区| 性欧美疯狂xxxxbbbb| 在线观看精品一区| 亚洲欧美视频一区| 成人深夜视频在线观看| 精品国产一区二区三区忘忧草| 亚洲妇女屁股眼交7| 在线欧美小视频| 中文字幕日韩一区| 高清在线观看日韩| 久久久久久9999| 精品亚洲成av人在线观看| 欧美高清激情brazzers| 亚洲成人精品一区二区| 色老汉av一区二区三区| 综合自拍亚洲综合图不卡区| 成人免费视频国产在线观看| 欧美国产日产图区| 成人精品免费看| 久久欧美中文字幕| 国产在线精品一区二区| 欧美大胆人体bbbb| 理论电影国产精品| 日韩视频免费观看高清在线视频| 亚洲va国产va欧美va观看| 欧美无乱码久久久免费午夜一区| 一二三四区精品视频| 色94色欧美sute亚洲线路二 | 欧美一区二区精品在线| 麻豆国产精品官网| 日韩一区二区视频在线观看| 日韩电影免费一区| 精品国产123| 国产盗摄一区二区| 国产精品另类一区| 波多野结衣欧美| 亚洲精品va在线观看| 欧美日韩一区二区电影| 青青草国产精品亚洲专区无| 日韩欧美激情四射| 国产激情一区二区三区四区 | 久久精品72免费观看| 久久亚洲一级片| 成人免费高清在线| 亚洲美女免费在线| 欧美人伦禁忌dvd放荡欲情| 日本不卡免费在线视频| 2019国产精品| 99精品久久久久久| 婷婷一区二区三区| 精品sm捆绑视频| 成人aaaa免费全部观看| 亚洲丰满少妇videoshd| 精品国产一区二区亚洲人成毛片| 成人爽a毛片一区二区免费| 亚洲一区二区在线免费看| 日韩一级视频免费观看在线| 国产乱子伦一区二区三区国色天香| 国产精品拍天天在线| 欧美人体做爰大胆视频| 99re8在线精品视频免费播放| 亚洲成人精品影院| 国产午夜精品福利| 欧美日韩综合色| 国产乱妇无码大片在线观看| 亚洲免费三区一区二区| 日韩午夜三级在线| 99久久精品情趣| 免费视频最近日韩| 国产精品久久毛片av大全日韩| 欧美日韩在线免费视频| 国产一区二区美女| 亚洲国产wwwccc36天堂| 精品美女在线播放| 欧洲日韩一区二区三区| 国产美女久久久久| 亚洲大片在线观看| 国产女同性恋一区二区| 欧美一区二区三区影视| 成人v精品蜜桃久久一区| 美女精品一区二区| 亚洲综合激情小说| 久久九九久久九九| 欧美一三区三区四区免费在线看| 91麻豆免费视频| 国产另类ts人妖一区二区| 日韩和欧美一区二区三区| 亚洲天堂2016| 亚洲国产精品二十页| 日韩三级高清在线| 欧美三级午夜理伦三级中视频|