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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? nstring.h

?? 奇跡世界公用文件源代碼,研究網(wǎng)絡(luò)游戲的朋友可以研究下
?? H
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
#ifndef N_STRING_H
#define N_STRING_H
//------------------------------------------------------------------------------
/**
    @膠飄傅 努貳膠 

    @author
    - RadonLabs GmbH 

    @since
    - 2005.6.13
    @remarks
    - 瘤肯 眠啊 
*/
//------------------------------------------------------------------------------

#pragma once
#include "../ProgramCommon/Define.h"
#include <ctype.h>
#include <string.h>
//#using <mscorlib.dll>
//using namespace System;

#include "Narray.h"


class nString
{
public:
    /// constructor
    nString();
    /// constructor 1
    nString(const char* str);
    /// copy constructor
    nString(const nString& rhs);
    /// set to int val
    nString(int intVal);
    /// set to float val
    nString(float floatVal);
    /// destructor
    ~nString();
    /// = operator
    nString& operator=(const nString& rhs);
    /// = operator with string
    nString& operator=(const char* rhs);
    /// += operator with char*
    nString& operator+=(const char* rhs);
    /// += operator with string
    nString& operator+=(const nString& rhs);
    /// Is `a' equal to `b'?
    friend bool operator == (const nString& a, const nString& b);
    /// Is `a' inequal to `b'?
    friend bool operator != (const nString& a, const nString& b);
    /// Subscript operator (read only).
    const char operator[](int i) const;
    /// Subscript operator (writeable).
    char& operator[](int i);
    /// set as char ptr, with explicit length
    void Set(const char* ptr, int length);
    /// set as char ptr
    void Set(const char* str);
    /// set as int value
    void SetInt(int val);
    /// set as float value
    void SetFloat(float val);
    /// get string as char ptr
    const char* Get() const;
    /// return content as integer
    int AsInt() const;
    /// return content as float
    float AsFloat() const;
    /// return length of string
    int Length() const;
    /// clear the string
    void Clear();
    /// return true if string object is empty
    bool IsEmpty() const;
    /// append character pointer
    void Append(const char* str);
    /// append string
    void Append(const nString& str);
    /// append a range of characters
    void AppendRange(const char* str, uint numChars);
    /// append int value
    void AppendInt(int val);
    /// append float value
    void AppendFloat(float val);
    /// convert string to lower case
	void ToLower();
    /// convert string to upper case
	void ToUpper();
    /// get first token (this will destroy the string)
    const char* GetFirstToken(const char* whiteSpace);
    /// get next token (this will destroy the string)
    const char* GetNextToken(const char* whiteSpace);
    /// tokenize string into a provided nString array
    int Tokenize(const char* whiteSpace, nArray<nString>& tokens) const;
    /// extract substring
    nString ExtractRange(int from, int to) const;
    /// terminate string at first occurence of character in set
    void Strip(const char* charSet);
    /// Index of first appearance of `v' starting from index `startIndex'.
    int IndexOf(const nString& v, int startIndex) const;
    /// return index of character in string
    int FindChar(unsigned char c, int startIndex) const;
    /// terminate string at given index
    void TerminateAtIndex(int index);
    /// strip slash at end of path, if exists
    void StripTrailingSlash();
    /// delete characters from charset at left side of string
    nString TrimLeft(const char* charSet) const;
    /// delete characters from charset at right side of string
    nString TrimRight(const char* charSet) const;
    /// trim characters from charset at both sides of string
    nString Trim(const char* charSet) const;
    /// substitute every occurance of a string with another string
    nString Substitute(const char* str, const char* substStr) const;
    /// convert string inplace from UTF-8 to 8-bit ANSI
    void UTF8toANSI();
    /// convert ANSI to UTF-8 in place
    void ANSItoUTF8();
    /// get pointer to extension (without the dot)
    const char* GetExtension() const;
    /// check if extension matches (no dot in the extension!)
    bool CheckExtension(const char* ext) const;
    /// convert backslashes to slashes
    void ConvertBackslashes();
    /// remove extension
    void StripExtension();
    /// extract the part after the last directory separator
    nString ExtractFileName() const;
    /// extract the last directory of the path
    nString ExtractLastDirName() const;
    /// extract the part before the last directory separator
    nString ExtractDirName() const;
    /// extract path until last slash
    nString ExtractToLastSlash() const;
    /// check if this string matches the given pattern
   // bool MatchPattern(const nString& pattern) const;
    /// 箭磊 牢瘤 八葷 
    bool IsNumberic();


protected:
    /// copy contents
    void Copy(const nString& src);
    /// delete contents
    void Delete();
    /// get pointer to last directory separator
    char* GetLastSlash() const;

    enum
    {
        LOCALSTRINGSIZE = 14,
    };
    char* string;
    char localString[LOCALSTRINGSIZE];
    ushort strLen;
};

//------------------------------------------------------------------------------
/** global
*/
/*
bool 
n_strmatch(const char* str, const char* pat)
{
    char c2;

    while (true) 
    {
        if (*pat == 0) 
        {
            if (*str == 0) return true;
            else           return false;
        }
        if ((*str == 0) && (*pat != '*')) return false;
        if (*pat=='*') 
        {
            pat++;
            if (*pat==0) return true;
            while (true) 
            {
                if (n_strmatch(str, pat)) return true;
                if (*str==0) return false;
                str++;
            }
        }
        if (*pat=='?') goto match;
        if (*pat=='[') 
        {
            pat++;
            while (true) 
            {
                if ((*pat==']') || (*pat==0)) return false;
                if (*pat==*str) break;
                if (pat[1] == '-') 
                {
                    c2 = pat[2];
                    if (c2==0) return false;
                    if ((*pat<=*str) && (c2>=*str)) break;
                    if ((*pat>=*str) && (c2<=*str)) break;
                    pat+=2;
                }
                pat++;
            }
            while (*pat!=']') 
            {
                if (*pat==0) 
                {
                    pat--;
                    break;
                }
                pat++;
            }
            goto match;
        }

        if (*pat=='\\') 
        {
            pat++;
            if (*pat==0) return false;
        }
        if (*pat!=*str) return false;

match:
        pat++;
        str++;
    }
}
*/
//------------------------------------------------------------------------------
/**
*/
inline
nString::nString() :
    string(0),
    strLen(0)
{
    this->localString[0] = 0;
}

//------------------------------------------------------------------------------
/**
*/
inline
void
nString::Delete()
{
    if (this->string)
    {
        free((void*) this->string);
        this->string = 0;
    }
    this->localString[0] = 0;
}

//------------------------------------------------------------------------------
/**
*/
inline
nString::~nString()
{
    this->Delete();
}

//------------------------------------------------------------------------------
/**
*/
inline
void
nString::Set(const char* str, int length)
{
    this->Delete();
    if (str)
    {
        this->strLen = length;
        char* ptr = this->localString;
        if (strLen >= LOCALSTRINGSIZE)
        {
            ptr = (char*) malloc(strLen + 1);
            this->string = ptr;
        }
        else
        {
            ptr = this->localString;
        }
        int i;
        for (i = 0; i < strLen; i++)
        {
            *ptr++ = *str++;
        }
        *ptr = 0;
    }
}

//------------------------------------------------------------------------------
/**
*/
inline
void
nString::Set(const char* str)
{
    int len = 0;
    if (str)
    {
        len = strlen(str);
    }
    this->Set(str, len);
}

//------------------------------------------------------------------------------
/**
*/
inline
void
nString::SetInt(int val)
{
    char buf[128];
    _snprintf(buf, sizeof(buf), "%d", val);
    this->Set(buf);
}

//------------------------------------------------------------------------------
/**
*/
inline
void
nString::SetFloat(float val)
{
    char buf[128];
    _snprintf(buf, sizeof(buf), "%.6f", val);
    this->Set(buf);
}

//------------------------------------------------------------------------------
/**
*/
inline
void
nString::Copy(const nString& src)
{
    ASSERT(0 == this->string);
    const char* str = src.Get();
    if (str)
    {
        this->Set(str);
    }
}

//------------------------------------------------------------------------------
/**
*/
inline
nString::nString(const char* str) :
    string(0),
    strLen(0)
{
    this->localString[0] = 0;
    this->Set(str);
}

//------------------------------------------------------------------------------
/**
*/
inline
nString::nString(const nString& rhs) :
    string(0),
    strLen(0)
{
    this->localString[0] = 0;
    this->Copy(rhs);
}

//------------------------------------------------------------------------------
/**
*/
inline
nString::nString(int intVal) :
    string(0),
    strLen(0)
{
    this->SetInt(intVal);
}

//------------------------------------------------------------------------------
/**
*/
inline
nString::nString(float floatVal) :
    string(0),
    strLen(0)
{
    this->SetFloat(floatVal);
}

//------------------------------------------------------------------------------
/**
*/
inline
const char*
nString::Get() const
{
    if (this->string)
    {
        return this->string;
    }
    else if (this->localString[0])
    {
        return this->localString;
    }
    else
    {
        return "";
    }
}

//------------------------------------------------------------------------------
/**
*/
inline
nString&
nString::operator=(const nString& rhs)
{
    if (&rhs != this)
    {
        this->Delete();
        this->Copy(rhs);
    }
    return *this;
}

//------------------------------------------------------------------------------
/**
*/
inline
nString&
nString::operator=(const char* rhs)
{
    this->Set(rhs);
    return *this;
}

//------------------------------------------------------------------------------
/**
*/
inline
void
nString::AppendRange(const char* str, uint numChars)
{
    ASSERT(str);
    if (numChars > 0)
    {
        ushort rlen = numChars;
        ushort tlen = this->strLen + rlen;
        if (this->string)
        {
            char* ptr = (char*) malloc(tlen + 1);
            strcpy(ptr, this->string);
            strncat(ptr, str, numChars);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产女同性恋一区二区| 日韩精品最新网址| 92国产精品观看| 欧美日韩国产综合视频在线观看| 91美女片黄在线| 91精品91久久久中77777| 成人h动漫精品一区二区| 色悠久久久久综合欧美99| 欧美在线免费视屏| 久久毛片高清国产| 国产欧美日韩在线视频| 欧美国产精品专区| 一区二区三区在线观看国产| 日韩 欧美一区二区三区| 国内精品久久久久影院薰衣草 | 91精品国产91综合久久蜜臀| 欧美精品视频www在线观看| 欧美一区二区精美| 中文字幕一区二区在线观看| 午夜欧美在线一二页| 国产精品一二三区在线| 欧美三级日韩在线| 中文字幕精品三区| 美女视频第一区二区三区免费观看网站 | 欧美色区777第一页| 2020日本不卡一区二区视频| 一区二区三区在线播放| 麻豆精品在线观看| 91精品国产综合久久香蕉麻豆| 亚洲欧美日韩国产一区二区三区 | 国产欧美日本一区二区三区| 老司机精品视频线观看86| 3d动漫精品啪啪1区2区免费 | 久久久亚洲精华液精华液精华液| 石原莉奈在线亚洲二区| 国产欧美久久久精品影院| 国产一区二区91| 精品人在线二区三区| 蜜桃精品在线观看| 欧美日韩mp4| 日韩精品亚洲一区二区三区免费| 色婷婷综合久久久久中文| 亚洲欧美偷拍另类a∨色屁股| 91免费国产在线| 亚洲伦在线观看| 欧美日韩不卡视频| 精品在线视频一区| 久久久一区二区三区| 不卡的av电影| 亚洲综合在线免费观看| 欧洲一区在线观看| 蜜臀av在线播放一区二区三区| 精品久久久久久最新网址| 国产精品888| 一区二区三区.www| 欧美电视剧在线观看完整版| 成人黄色777网| 日韩高清在线不卡| 国产午夜精品一区二区| 精品视频在线免费观看| 精品一区精品二区高清| 成人av网址在线| 午夜免费久久看| 久久久国产精品午夜一区ai换脸| 在线观看网站黄不卡| 精品一区二区国语对白| 亚洲精品美腿丝袜| 白白色亚洲国产精品| 亚洲日本va在线观看| 久久综合久久鬼色中文字| 91丝袜美女网| 国产二区国产一区在线观看| 亚洲综合小说图片| 久久综合狠狠综合| 欧美亚男人的天堂| av一二三不卡影片| 精品亚洲aⅴ乱码一区二区三区| 亚洲一区在线观看免费观看电影高清 | 欧美一区二区啪啪| 欧美影视一区在线| 大胆欧美人体老妇| 国产老女人精品毛片久久| 蜜桃在线一区二区三区| 日本成人中文字幕在线视频| 亚洲福中文字幕伊人影院| 一区二区视频在线| 亚洲欧美另类久久久精品| 国产精品丝袜黑色高跟| 国产女人18水真多18精品一级做| 欧美电影免费观看高清完整版在| 91精品国产乱码久久蜜臀| 欧美日韩免费在线视频| 欧美精品xxxxbbbb| 91精品国产综合久久精品app| 色综合 综合色| 欧美午夜精品久久久久久超碰| 91高清在线观看| 欧美日韩一区小说| 欧美一区二区视频在线观看2022| 日韩欧美一级片| 久久日一线二线三线suv| 国产欧美日韩三级| 亚洲日本成人在线观看| 亚洲午夜久久久久中文字幕久| 亚洲中国最大av网站| 午夜精品福利在线| 日韩精品久久理论片| 精品中文字幕一区二区小辣椒| 国产精品自拍在线| 日本伦理一区二区| 欧美一区二区三区在| 久久女同互慰一区二区三区| 中文字幕一区二区三中文字幕| 亚洲一级二级三级| 久久国产生活片100| 99国产精品视频免费观看| 欧美精品成人一区二区三区四区| 久久久久亚洲蜜桃| 亚洲一区二区三区三| 国产在线精品一区二区三区不卡| 成人午夜av影视| 欧美一区二区三区四区久久| 国产精品视频一二| 免费观看成人鲁鲁鲁鲁鲁视频| 成人中文字幕合集| 日韩视频在线你懂得| 国产精品你懂的在线欣赏| 日本不卡高清视频| 91蝌蚪porny九色| 国产亚洲精品精华液| 日本午夜一本久久久综合| 97se亚洲国产综合自在线 | 国产凹凸在线观看一区二区| 制服丝袜亚洲播放| 亚洲国产欧美一区二区三区丁香婷| 国产成人精品aa毛片| 精品乱人伦小说| 日本大胆欧美人术艺术动态| 欧美体内she精高潮| 亚洲欧美日韩国产成人精品影院| 国产在线精品一区二区| 欧美成人vps| 青娱乐精品视频| 日韩欧美一区二区不卡| 秋霞电影网一区二区| 日韩一区二区三区在线观看 | 久久影院视频免费| 亚洲毛片av在线| 91麻豆swag| 一区二区三区四区乱视频| 9l国产精品久久久久麻豆| 日韩一区在线播放| aaa国产一区| 亚洲日本成人在线观看| 欧美体内she精视频| 日韩一区精品视频| xnxx国产精品| 不卡av在线网| 亚洲国产一二三| 精品国产123| 成人开心网精品视频| 亚洲女同女同女同女同女同69| 91美女在线看| 免播放器亚洲一区| 中文乱码免费一区二区| 91成人网在线| 久久国产麻豆精品| 国产精品久久久久影视| 欧美中文字幕一区| 精品一区二区三区在线观看| 久久久国产午夜精品| 在线观看国产日韩| 韩国av一区二区| 一级做a爱片久久| 欧美大片在线观看一区| av在线播放一区二区三区| 午夜精品久久久久久久99水蜜桃 | 毛片一区二区三区| 欧美经典一区二区| 欧美日本在线看| 岛国av在线一区| 久久精品国产秦先生| 亚洲已满18点击进入久久| 久久亚洲精精品中文字幕早川悠里| 成人福利在线看| 老司机精品视频导航| 国产精品三级在线观看| 欧美一区二区三区视频免费| 91国产免费观看| 99在线热播精品免费| 久热成人在线视频| 日韩av在线免费观看不卡| 一区二区免费在线播放| 亚洲欧洲av色图| 国产精品久久久久久久久动漫 | 欧美亚洲丝袜传媒另类| av电影在线观看完整版一区二区| 精品伊人久久久久7777人| 日本欧美一区二区三区| 日本aⅴ免费视频一区二区三区|