www.pudn.com > xml2db.rar > chash.cpp


/**
 *@file chash.cpp
 *@brief Chash的实现文件
 *
 *Chash是一个工具类,用来分析key=value格式的配置文件,或数据文件
 *Author: cuichao@boco.com.cn \n
 *ChangeLog: \n
 *14-09-05 11:12 create
 *2006-06-23 10:20:28 改成配置项区分大小写
 */

#include 
#include 
#include 
#include 
#include 
#include "chash.h"

using namespace std;


static bool IsSpace(char ch)
{
   if(ch==' '||ch=='\t'||ch=='\r'||ch=='\n')
     return true;
   else
     return false;
}


static void ChopStr(string &str)
{ 
  if(str.empty())
      return;
  unsigned int i;
  for(i=0;IsSpace(str.at(i))&&i=0;i--);
  str.erase(i+1);
}

static void ToUpper(string &str)
{
   for(int i=0;i::const_iterator it_t;
    
    for(it_t=m_map.begin();it_t!=m_map.end();it_t++)
    {
        strResult+=(*it_t).first;
        strResult+='=';
        strResult+=(*it_t).second;
        strResult+='|';
    }
    return strResult;
}

CHash::iterator CHash::find(const string & key)
{    
    return m_map.find(key);
}
  
CHash::iterator CHash::end()
{
    return m_map.end();
}

CHash::iterator CHash::begin()
{
    return m_map.begin();
}

CHash::const_iterator CHash::find(const string & key) const
{    
    return m_map.find(key);
}
  
CHash::const_iterator CHash::end() const
{
    return m_map.end();
}

CHash::const_iterator CHash::begin() const
{
    return m_map.begin();
}

CHash::~CHash()
{    
}

CHash::CHash(const CHash &src)
{
    m_map=src.m_map;
}

const CHash & CHash::operator=(const CHash &src)
{
    if(!m_map.empty())
    {
        m_map.clear();
    }
    m_map=src.m_map;
    return (*this);
}


ostream & operator<<(ostream& os,const CHash& hs)
{
    CHash::const_iterator it_hs;    
    for(it_hs=hs.begin();it_hs!=hs.end();it_hs++)
    {
        os<first<<" = "<second<