C++函数

    /**
     * 将整数字符串按照特定字符拆分成字符串数组
     * example 输入:"1,4,3,110,2,90,7" 输出 "1","4","3","110","2","90","7"
     * @return 
     */
void split(string& strInput, char chsymbol, vector<string>& vecSplit)
{
    string::size_type startPos = 0;
    string::size_type endPos = string::npos;

    while ((endPos = strInput.find(chsymbol, startPos)) != string::npos)
    {
        vecSplit.push_back(strInput.substr(startPos, endPos - startPos));
        startPos = endPos + 1; 
    }

    vecSplit.push_back(strInput.substr(startPos));
}

 

// 字符串整数间用空格隔开
void outputWithSpace(vector<string>& vecDelOutPut, string& strOutput)
{
    int count = 0;

    for (vector<string>::iterator it = vecDelOutPut.begin(); it != vecDelOutPut.end(); it++)
    {
        strOutput.append(it->c_str());
        strOutput.append(" ");
    }

    // 去掉最后一个空格
    string::size_type npos = strOutput.find_last_of( );
    strOutput = strOutput.substr(0, npos);
}

 

/**
    * 升序排列
    * @return 
    * @param 输入 开始,结束,比较函数
    */
    sort(vecSplit.begin(), vecSplit.end(), compare);
    
// sort比较函数
bool compare(string a, string b)
{
    return (atoi(a.c_str()) < atoi(b.c_str()));
}
// compare函数还可以定义为int型,如果返回正数则a>b,负数则a<b,0的话就是a=b

 

/***********reverse 倒序*************/
#include <algorithm>

std:reverse(string.begin(), string.end());

 

/************* advance函数,操作迭代器 
template <class InputIterator, class Distance>
void advance (InputIterator& i, Distance n);
当n为正数时,向前移动;当n为负数时,向后移动
*******************************************/
#include <algorithm>

unsigned int curPlayer = 1;
list<int>::iterator it = listPlayer.begin();
advance(it, curPlayer);

 

/***************************** String2Int *****************************/
int Str2Int( const std::string &str )
{
    int i = 0;
    std::istringstream io(str);
    if (str == "")
    {
        i = 0;
    }
    else if (str.length() >= 3 && (str.substr(0, 2) == "0x" || str.substr(0, 2) == "0X"))
    {
        io >> std::hex >> i;
    }
    else if (str.length() >= 2 && str.substr(0, 1) == "-")
    {
        io >> i;
    }
    else if (!IsDigitStr(str))
    {
        i = 0;
    }
    else
    {
        io >> i;
    }
    return i;
}

 

/*
 * 判断一个字符串是否只包含0~9的数字
 * @param str 输入字符串
 * @return bool  true 字符串只包含0~9的数字
 */
bool IsDigitStr(const std::string & Str)
{
    for (std::string::const_iterator it = Str.begin(); it != Str.end(); ++it)
    {
        if (!isdigit(*it))
        {
            return false;
        }
    }

    return true;
}

 

/**********************IntToStr*********************/
std::string IntToStr(const int i)
{
    std::string str;
    
    char szBuf[16] = {0};
    str.append(szBuf, (unsigned int)(sprintf(szBuf, "%d", i)));
    
    return str;
}
//或者
#include <sstream>

long iInput;
ostringstream ostrInput;
ostrInput << iInput;
string strInput = ostrInput.str();

 

/**********************replace*********************/
     #include <algorithm>
    
     string   strInfo="This is Winter, Winter is a programmer. Do you know Winter?";
     cout<<"old string is :"<<endl<<strInfo<<endl;
     
     /// 将strInfo中的‘W‘替换成‘w‘
     replace(strInfo.begin(),strInfo.end(),W,w);
     cout<<"new string is :"<<endl<<strInfo<<endl;

 

/*************************判断map插入是否成功***********************/
#include <utility>
typedef std::map<ACE_UINT32, SMPP_LOG_INFO> LOGVALUEMAP;

m_upLogMap.erase(EMFReq.m_head.m_sequence_number);

// 保存logMap
std::pair<LOGVALUEMAP::iterator, bool> PairRev = m_upLogMap.insert(LOGVALUEMAP::value_type(EMFReq.m_head.m_sequence_number, logInfo));
if (!PairRev.second)
{
    ......
}

 

/*********************map(list)按vaule大小排序*************/
#include <algorithm>

typedef pair<char, int> PAIR;

vector<PAIR> vecPair;
stable_sort(vecPair.begin(), vecPair.end(), compare);

int compare(const PAIR a, const PAIR b)
{
    return a.second > b.second;
}

 

/****************小写转大写*******************/
std::string sl = "hello";
std::transform(sl.begin(), sl.end(), sl.begin(), toupper);  
 
transform 遍历容器里面元素 执行操作
第1和2参数数据起始和结束位置(迭代器)
参数3写入目标起始位置
参数4执行操作(函数)

 

/*
 * 找到str中的strKey将其替换为strValue.
 * @param str 待替换的字符串
 * @param strKey 需替换的字符源子串
 * @param strValue 需替换的字符目的子串
 */
void ReplaceKeyValue(std::string& str, const std::string& strKey, const std::string& strValue)
{
    std::string::size_type findPos = 0;
    while ((findPos = str.find(strKey, findPos)) != std::string::npos)
    {
        str.replace(findPos, strKey.size(), strValue);
        findPos += strValue.size();
    }
}

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。