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

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

?? inireader.h

?? KeePassX用于保護(hù)密碼的安全
?? H
字號:
// IniFile.cpp:  Implementation of the CIniFile class.
// Written by:   Adam Clauss
// Email: cabadam@tamu.edu
// You may use this class/code as you wish in your programs.  Feel free to distribute it, and
// email suggested changes to me.
//
// Rewritten by: Shane Hill
// Date:         21/08/2001
// Email:        Shane.Hill@dsto.defence.gov.au
// Reason:       Remove dependancy on MFC. Code should compile on any
//               platform. Tested on Windows/Linux/Irix
//////////////////////////////////////////////////////////////////////

#ifndef CIniFile_H
#define CIniFile_H

// C++ Includes
#include <string>
#include <vector>

// C Includes
#include <stdlib.h>

using namespace std;

#define MAX_KEYNAME    128
#define MAX_VALUENAME  128
#define MAX_VALUEDATA 2048

class CIniFile  
{
private:
  bool   caseInsensitive;
  string path;
  struct key {
    vector<string> names;
    vector<string> values; 
    vector<string> comments;
  };
  vector<key>    keys; 
  vector<string> names; 
  vector<string> comments;
  string CheckCase( string s) const;

public:
  enum errors{ noID = -1};
  CIniFile( string const iniPath = "");
  virtual ~CIniFile()                            {}

  // Sets whether or not keynames and valuenames should be case sensitive.
  // The default is case insensitive.
  void CaseSensitive()                           {caseInsensitive = false;}
  void CaseInsensitive()                         {caseInsensitive = true;}

  // Sets path of ini file to read and write from.
  void Path(string const newPath)                {path = newPath;}
  string Path() const                            {return path;}
  void SetPath(string const newPath)             {Path( newPath);}

  // Reads ini file specified using path.
  // Returns true if successful, false otherwise.
  bool ReadFile();
  
  // Writes data stored in class to ini file.
  bool WriteFile(); 
  
  // Deletes all stored ini data.
  void Erase();
  void Clear()                                   {Erase();}
  void Reset()                                   {Erase();}

  // Returns index of specified key, or noID if not found.
  long FindKey( string const keyname) const;

  // Returns index of specified value, in the specified key, or noID if not found.
  long FindValue( unsigned const keyID, string const valuename) const;

  // Returns number of keys currently in the ini.
  unsigned NumKeys() const                       {return names.size();}
  unsigned GetNumKeys() const                    {return NumKeys();}

  // Add a key name.
  unsigned AddKeyName( string const keyname);

  // Returns key names by index.
  string KeyName( unsigned const keyID) const;
  string GetKeyName( unsigned const keyID) const {return KeyName(keyID);}

  // Returns number of values stored for specified key.
  unsigned NumValues( unsigned const keyID);
  unsigned GetNumValues( unsigned const keyID)   {return NumValues( keyID);}
  unsigned NumValues( string const keyname);
  unsigned GetNumValues( string const keyname)   {return NumValues( keyname);}

  // Returns value name by index for a given keyname or keyID.
  string ValueName( unsigned const keyID, unsigned const valueID) const;
  string GetValueName( unsigned const keyID, unsigned const valueID) const {
    return ValueName( keyID, valueID);
  }
  string ValueName( string const keyname, unsigned const valueID) const;
  string GetValueName( string const keyname, unsigned const valueID) const {
    return ValueName( keyname, valueID);
  }

  // Gets value of [keyname] valuename =.
  // Overloaded to return string, int, and double.
  // Returns defValue if key/value not found.
  string GetValue( unsigned const keyID, unsigned const valueID, string const defValue = "") const;
  string GetValue(string const keyname, string const valuename, string const defValue = "") const; 
  int    GetValueI(string const keyname, string const valuename, int const defValue = 0) const;
  bool   GetValueB(string const keyname, string const valuename, bool const defValue = false) const {
    return bool( GetValueI( keyname, valuename, int( defValue)));
  }
  double   GetValueF(string const keyname, string const valuename, double const defValue = 0.0) const;
  // This is a variable length formatted GetValue routine. All these voids
  // are required because there is no vsscanf() like there is a vsprintf().
  // Only a maximum of 8 variable can be read.
  unsigned GetValueV( string const keyname, string const valuename, char *format,
		      void *v1 = 0, void *v2 = 0, void *v3 = 0, void *v4 = 0,
  		      void *v5 = 0, void *v6 = 0, void *v7 = 0, void *v8 = 0,
  		      void *v9 = 0, void *v10 = 0, void *v11 = 0, void *v12 = 0,
  		      void *v13 = 0, void *v14 = 0, void *v15 = 0, void *v16 = 0);

  // Sets value of [keyname] valuename =.
  // Specify the optional paramter as false (0) if you do not want it to create
  // the key if it doesn't exist. Returns true if data entered, false otherwise.
  // Overloaded to accept string, int, and double.
  bool SetValue( unsigned const keyID, unsigned const valueID, string const value);
  bool SetValue( string const keyname, string const valuename, string const value, bool const create = true);
  bool SetValueI( string const keyname, string const valuename, int const value, bool const create = true);
  bool SetValueB( string const keyname, string const valuename, bool const value, bool const create = true) {
    return SetValueI( keyname, valuename, int(value), create);
  }
  bool SetValueF( string const keyname, string const valuename, double const value, bool const create = true);
  bool SetValueV( string const keyname, string const valuename, char *format, ...);

  // Deletes specified value.
  // Returns true if value existed and deleted, false otherwise.
  bool DeleteValue( string const keyname, string const valuename);
  
  // Deletes specified key and all values contained within.
  // Returns true if key existed and deleted, false otherwise.
  bool DeleteKey(string keyname);

  // Header comment functions.
  // Header comments are those comments before the first key.
  //
  // Number of header comments.
  unsigned NumHeaderComments()                  {return comments.size();}
  // Add a header comment.
  void     HeaderComment( string const comment);
  // Return a header comment.
  string   HeaderComment( unsigned const commentID) const;
  // Delete a header comment.
  bool     DeleteHeaderComment( unsigned commentID);
  // Delete all header comments.
  void     DeleteHeaderComments()               {comments.clear();}

  // Key comment functions.
  // Key comments are those comments within a key. Any comments
  // defined within value names will be added to this list. Therefore,
  // these comments will be moved to the top of the key definition when
  // the CIniFile::WriteFile() is called.
  //
  // Number of key comments.
  unsigned NumKeyComments( unsigned const keyID) const;
  unsigned NumKeyComments( string const keyname) const;
  // Add a key comment.
  bool     KeyComment( unsigned const keyID, string const comment);
  bool     KeyComment( string const keyname, string const comment);
  // Return a key comment.
  string   KeyComment( unsigned const keyID, unsigned const commentID) const;
  string   KeyComment( string const keyname, unsigned const commentID) const;
  // Delete a key comment.
  bool     DeleteKeyComment( unsigned const keyID, unsigned const commentID);
  bool     DeleteKeyComment( string const keyname, unsigned const commentID);
  // Delete all comments for a key.
  bool     DeleteKeyComments( unsigned const keyID);
  bool     DeleteKeyComments( string const keyname);
};

#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本不卡123| 久久美女高清视频| 亚洲美腿欧美偷拍| jlzzjlzz亚洲女人18| 国产日产欧美一区| 丰满亚洲少妇av| 国产欧美一区二区精品忘忧草| 激情综合色丁香一区二区| 欧美一区二区三区电影| 午夜私人影院久久久久| 欧美三级午夜理伦三级中视频| 亚洲欧美日韩国产综合| 在线亚洲免费视频| 亚洲午夜国产一区99re久久| 欧美视频日韩视频| 日韩精品一二三区| 欧美一区二区三区系列电影| 日本强好片久久久久久aaa| 在线精品亚洲一区二区不卡| 亚洲成人av一区二区三区| 欧美高清视频在线高清观看mv色露露十八 | 亚洲丰满少妇videoshd| 91国偷自产一区二区三区成为亚洲经典 | 久久综合综合久久综合| 日韩美女在线视频| 国产一本一道久久香蕉| 国产精品免费人成网站| 丰满亚洲少妇av| 亚洲精品视频免费观看| 色综合久久六月婷婷中文字幕| 一区二区三区小说| 欧美喷潮久久久xxxxx| 久久国产福利国产秒拍| 欧美国产亚洲另类动漫| 色成人在线视频| 麻豆一区二区三区| 国产调教视频一区| 在线观看区一区二| 激情五月婷婷综合网| 中文字幕日韩一区| 欧美一级欧美三级在线观看 | 日韩欧美第一区| 不卡一区在线观看| 天堂va蜜桃一区二区三区漫画版| 久久综合五月天婷婷伊人| 国产成人综合自拍| 午夜视频在线观看一区二区| 国产日韩欧美在线一区| 欧美调教femdomvk| 国产iv一区二区三区| 亚洲国产成人av网| 国产欧美日韩视频在线观看| 欧美日韩1区2区| 国产综合色产在线精品| 一区二区三区美女| 久久男人中文字幕资源站| 欧美午夜一区二区三区| 高清不卡一区二区| 蜜臀久久99精品久久久画质超高清 | 日韩一级免费一区| 色综合久久综合网欧美综合网| 免费成人你懂的| 国产精品污污网站在线观看| 欧美一级淫片007| 日本福利一区二区| 国产91精品露脸国语对白| 日本欧美加勒比视频| 亚洲黄色性网站| 国产精品色噜噜| 日韩精品中午字幕| 欧美日韩www| 色婷婷激情一区二区三区| 日韩一区二区在线观看视频播放| 99免费精品在线观看| 成人a区在线观看| 不卡的电影网站| 成人国产精品免费观看动漫| 不卡在线视频中文字幕| 99久久99精品久久久久久| caoporen国产精品视频| 一本在线高清不卡dvd| 色婷婷精品久久二区二区蜜臂av| 91在线观看美女| 日本久久一区二区三区| 欧美午夜精品久久久久久超碰| 欧美中文字幕久久| 91精品国产综合久久久久久久| 欧美一区二区久久久| 欧美成人艳星乳罩| 久久久精品一品道一区| 中文字幕中文乱码欧美一区二区 | 欧美自拍偷拍一区| 欧美日韩大陆在线| 欧美mv日韩mv| 国产精品久久久久久久浪潮网站 | 激情伊人五月天久久综合| 国产精品一区不卡| 色综合一区二区| 欧美电影在哪看比较好| 精品粉嫩aⅴ一区二区三区四区 | 最近日韩中文字幕| 五月天激情综合网| 国精产品一区一区三区mba桃花| 国产成a人无v码亚洲福利| 91国产精品成人| 日韩精品一区二区在线| 国产精品久久一卡二卡| 亚洲在线观看免费视频| 国内外成人在线| 色播五月激情综合网| 日韩你懂的在线播放| 亚洲视频一区在线观看| 免费看精品久久片| 91在线免费播放| 日韩女优毛片在线| 18成人在线观看| 精品一区二区三区在线观看国产| 波多野结衣中文字幕一区 | 一区二区三区免费| 国产九九视频一区二区三区| 91麻豆福利精品推荐| 精品国产免费一区二区三区香蕉| ㊣最新国产の精品bt伙计久久| 免费人成黄页网站在线一区二区| 99麻豆久久久国产精品免费优播| 91麻豆精品国产91久久久久久| 国产精品欧美综合在线| 久久精品国产99国产| 色88888久久久久久影院野外| 国产亚洲婷婷免费| 首页国产丝袜综合| 色94色欧美sute亚洲线路一ni | 性做久久久久久免费观看| 国产一区二区三区免费看| 欧美又粗又大又爽| 国产精品美女一区二区三区| 免费高清在线一区| 欧美日韩精品一区二区三区| 中文字幕一区二区三区在线不卡| 韩国av一区二区三区| 69av一区二区三区| 一区二区三区日本| 99精品热视频| 欧美激情一区三区| 国产精品一级二级三级| 日韩视频一区二区| 日本视频中文字幕一区二区三区| 色综合久久综合网| 亚洲摸摸操操av| 99视频一区二区三区| 国产精品久久久久一区二区三区共| 久久99热这里只有精品| 欧美一二三在线| 日韩经典一区二区| 欧美人成免费网站| 天天做天天摸天天爽国产一区| 色综合网站在线| 亚洲欧美色综合| 91在线视频观看| 最新日韩在线视频| 99re成人精品视频| 亚洲欧美在线高清| 99re热视频精品| 亚洲激情图片小说视频| 91亚洲男人天堂| 亚洲精品综合在线| 在线观看日韩高清av| 亚洲午夜私人影院| 欧美日韩综合色| 日韩精品一级中文字幕精品视频免费观看 | 懂色av中文一区二区三区| 国产三级久久久| 不卡的av在线| 一区二区三区四区亚洲| 欧美日韩在线免费视频| 首页国产丝袜综合| 欧美成人三级电影在线| 国产激情一区二区三区| 国产精品情趣视频| 日本高清视频一区二区| 亚洲3atv精品一区二区三区| 91精品国产色综合久久ai换脸| 蜜臀av国产精品久久久久 | 日韩欧美中文字幕公布| 久久www免费人成看片高清| 日本一区二区三区久久久久久久久不 | 日韩理论片中文av| 欧美日韩一卡二卡三卡| 麻豆精品蜜桃视频网站| 欧美高清在线一区| 在线精品亚洲一区二区不卡| 青青草成人在线观看| 国产偷国产偷精品高清尤物| 色综合天天综合网国产成人综合天 | 欧美日韩精品一区二区| 极品少妇一区二区| 国产精品国产三级国产普通话蜜臀 | 中文字幕在线观看一区二区| 欧美视频在线一区二区三区| 狂野欧美性猛交blacked|