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

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

?? inifile.cpp

?? Client 和Server 配套的網(wǎng)絡(luò)連接程序。
?? CPP
字號(hào):
// IniFile.cpp: implementation of the CIniFile class.
// Written by: Adam Clauss
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "IniFile.h"
#include "fstream.h"

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

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

//default constructor
CIniFile::CIniFile()
{
}

//constructor, can specify pathname here instead of using SetPath later
CIniFile::CIniFile(CString inipath)
{
	path = inipath;
}

//default destructor
CIniFile::~CIniFile()
{

}

/////////////////////////////////////////////////////////////////////
// Public Functions
/////////////////////////////////////////////////////////////////////

//sets path of ini file to read and write from
void CIniFile::SetPath(CString newpath)
{
	path = newpath;
}

//reads ini file specified using CIniFile::SetPath()
//returns true if successful, false otherwise
bool CIniFile::ReadFile()
{
	CFile file;
	CFileStatus status;
	if (!file.GetStatus(path,status))
		return 0;
	ifstream inifile;
	CString readinfo;
	inifile.open(path);
	int curkey = -1, curval = -1;
	if (inifile.fail())
	{
		error = "Unable to open ini file.";
		return 0;
	}
	CString keyname, valuename, value;
	CString temp;
	while (getline(inifile,readinfo))
	{
		if (readinfo != "")
		{
			if (readinfo[0] == '[' && readinfo[readinfo.GetLength()-1] == ']') //if a section heading
			{
				keyname = readinfo;
				keyname.TrimLeft('[');
				keyname.TrimRight(']');
			}
			else //if a value
			{
				valuename = readinfo.Left(readinfo.Find("="));
				value = readinfo.Right(readinfo.GetLength()-valuename.GetLength()-1);
				SetValue(keyname,valuename,value);
			}
		}
	}
	inifile.close();
	return 1;
}

//writes data stored in class to ini file
void CIniFile::WriteFile()
{
	ofstream inifile;
	inifile.open(path);
	for (int keynum = 0; keynum <= names.GetUpperBound(); keynum++)
	{
		if (keys[keynum].names.GetSize() != 0)
		{
			inifile << '[' << names[keynum] << ']' << endl;
			for (int valuenum = 0; valuenum <= keys[keynum].names.GetUpperBound(); valuenum++)
			{
				inifile << keys[keynum].names[valuenum] << "=" << keys[keynum].values[valuenum];
				if (valuenum != keys[keynum].names.GetUpperBound())
					inifile << endl;
				else
					if (keynum < names.GetSize())
						inifile << endl;
			}
			if (keynum < names.GetSize())
				inifile << endl;
		}
	}
	inifile.close();
}

//deletes all stored ini data
void CIniFile::Reset()
{
	keys.SetSize(0);
	names.SetSize(0);
}

//returns number of keys currently in the ini
int CIniFile::GetNumKeys()
{
	return keys.GetSize();
}

//returns number of values stored for specified key, or -1 if key found
int CIniFile::GetNumValues(CString keyname)
{
	int keynum = FindKey(keyname);
	if (keynum == -1)
		return -1;
	else
		return keys[keynum].names.GetSize();
}

//gets value of [keyname] valuename = 
//overloaded to return CString, int, and double
CString CIniFile::GetValue(CString keyname, CString valuename)
{
	int keynum = FindKey(keyname), valuenum = FindValue(keynum,valuename);

	if (keynum == -1)
	{
		error = "Unable to locate specified key.";
		return "";
	}

	if (valuenum == -1)
	{
		error = "Unable to locate specified value.";
		return "";
	}
	return keys[keynum].values[valuenum];
}

//gets value of [keyname] valuename = 
//overloaded to return CString, int, and double
int CIniFile::GetValueI(CString keyname, CString valuename)
{
	return atoi(GetValue(keyname,valuename));
}

//gets value of [keyname] valuename = 
//overloaded to return CString, int, and double
double CIniFile::GetValueF(CString keyname, CString valuename)
{
	return atof(GetValue(keyname, valuename));
}

//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 CString, int, and double
bool CIniFile::SetValue(CString keyname, CString valuename, CString value, bool create)
{
	int keynum = FindKey(keyname), valuenum = 0;
	//find key
	if (keynum == -1) //if key doesn't exist
	{
		if (!create) //and user does not want to create it,
			return 0; //stop entering this key
		names.SetSize(names.GetSize()+1);
		keys.SetSize(keys.GetSize()+1);
		keynum = names.GetSize()-1;
		names[keynum] = keyname;
	}

	//find value
	valuenum = FindValue(keynum,valuename);
	if (valuenum == -1)
	{
		if (!create)
			return 0;
		keys[keynum].names.SetSize(keys[keynum].names.GetSize()+1);
		keys[keynum].values.SetSize(keys[keynum].names.GetSize()+1);
		valuenum = keys[keynum].names.GetSize()-1;
		keys[keynum].names[valuenum] = valuename;
	}
	keys[keynum].values[valuenum] = value;
	return 1;
}

//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 CString, int, and double
bool CIniFile::SetValueI(CString keyname, CString valuename, int value, bool create)
{
	CString temp;
	temp.Format("%d",value);
	return SetValue(keyname, valuename, temp, create);
}

//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 CString, int, and double
bool CIniFile::SetValueF(CString keyname, CString valuename, double value, bool create)
{
	CString temp;
	temp.Format("%e",value);
	return SetValue(keyname, valuename, temp, create);
}

//deletes specified value
//returns true if value existed and deleted, false otherwise
bool CIniFile::DeleteValue(CString keyname, CString valuename)
{
	int keynum = FindKey(keyname), valuenum = FindValue(keynum,valuename);
	if (keynum == -1 || valuenum == -1)
		return 0;

	keys[keynum].names.RemoveAt(valuenum);
	keys[keynum].values.RemoveAt(valuenum);
	return 1;
}

//deletes specified key and all values contained within
//returns true if key existed and deleted, false otherwise
bool CIniFile::DeleteKey(CString keyname)
{
	int keynum = FindKey(keyname);
	if (keynum == -1)
		return 0;
	keys.RemoveAt(keynum);
	names.RemoveAt(keynum);
	return 1;
}

/////////////////////////////////////////////////////////////////////
// Private Functions
/////////////////////////////////////////////////////////////////////

//returns index of specified key, or -1 if not found
int CIniFile::FindKey(CString keyname)
{
	int keynum = 0;
	while ( keynum < keys.GetSize() && names[keynum] != keyname)
		keynum++;
	if (keynum == keys.GetSize())
		return -1;
	return keynum;
}

//returns index of specified value, in the specified key, or -1 if not found
int CIniFile::FindValue(int keynum, CString valuename)
{
	if (keynum == -1)
		return -1;
	int valuenum = 0;
	while (valuenum < keys[keynum].names.GetSize() && keys[keynum].names[valuenum] != valuename)
		valuenum++;
	if (valuenum == keys[keynum].names.GetSize())
		return -1;
	return valuenum;
}

//overloaded from original getline to take CString
istream & CIniFile:: getline(istream & is, CString & str)
{
    char buf[2048];
    is.getline(buf,2048);
    str = buf;
    return is;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人免费毛片app| 国产剧情一区二区三区| 国产一区二区三区观看| 久久久久久影视| 石原莉奈在线亚洲二区| 国产精品女同互慰在线看| 91精品国产综合久久婷婷香蕉 | 久久国产尿小便嘘嘘尿| 国产精品久久久久四虎| 精品美女一区二区三区| 一本久久综合亚洲鲁鲁五月天| 六月丁香综合在线视频| 亚洲精品国产精品乱码不99| 欧美国产欧美综合| 欧美电视剧在线看免费| 欧美色成人综合| 色综合久久综合| 国产一区二区免费视频| 免费在线看成人av| 亚洲国产精品一区二区久久| 国产精品美日韩| 久久综合一区二区| 日韩亚洲国产中文字幕欧美| 91麻豆自制传媒国产之光| 国产成人在线看| 久久99热这里只有精品| 日韩高清欧美激情| 亚洲aaa精品| 亚洲一区二区在线免费看| 中文字幕在线视频一区| 日本一区二区视频在线观看| 亚洲精品在线一区二区| 日韩一级二级三级| 欧美一激情一区二区三区| 欧美日产国产精品| 欧亚一区二区三区| 91福利国产精品| 色婷婷综合久久久久中文| 成a人片亚洲日本久久| 懂色av一区二区三区免费观看 | 久久新电视剧免费观看| 欧美岛国在线观看| 欧美一二三区在线| 日韩免费看的电影| 欧美成人aa大片| 欧美tickling网站挠脚心| 精品国产露脸精彩对白 | 国产欧美一二三区| 亚洲女同一区二区| 日韩一区二区三免费高清| 九色综合狠狠综合久久| 久久福利资源站| 黄一区二区三区| 国产麻豆精品95视频| 国产在线国偷精品产拍免费yy| 精品一区二区三区欧美| 久久99精品久久久久久| 国产精品中文欧美| 成人一级黄色片| 91麻豆免费在线观看| 欧美专区在线观看一区| 91精品国产品国语在线不卡| 欧美成人猛片aaaaaaa| 国产女人18毛片水真多成人如厕 | 91精品中文字幕一区二区三区| 91精品国产乱码| 精品999久久久| 中文乱码免费一区二区| 亚洲激情第一区| 日韩国产高清在线| 国产精品888| 91搞黄在线观看| 日韩欧美国产电影| 国产精品人人做人人爽人人添| 欧美性xxxxx极品少妇| 亚洲午夜羞羞片| 亚洲国产毛片aaaaa无费看| 亚洲一区二区成人在线观看| 调教+趴+乳夹+国产+精品| 激情综合色综合久久| 成人成人成人在线视频| 欧美日韩一区二区三区免费看| 欧美一区二区三区不卡| 欧美国产精品专区| 亚洲一区自拍偷拍| 国产精品综合视频| 欧美性欧美巨大黑白大战| 精品久久久三级丝袜| 成人欧美一区二区三区小说| 视频一区二区三区在线| 丁香天五香天堂综合| 欧美亚洲动漫制服丝袜| 久久精品人人做人人爽97| 一区二区三区在线视频播放| 国内不卡的二区三区中文字幕 | 中文字幕国产精品一区二区| 亚洲不卡在线观看| 成人国产亚洲欧美成人综合网| 欧美精品777| 国产精品福利影院| 韩国女主播一区| 欧美日韩一区视频| 国产精品卡一卡二卡三| 日本不卡一区二区| 欧洲中文字幕精品| 日本一区二区三区高清不卡| 婷婷成人综合网| 99久久99久久免费精品蜜臀| 精品日韩一区二区三区 | 国产一区欧美二区| 欧美精选在线播放| 亚洲欧美国产77777| 国产一区二区主播在线| 欧美另类变人与禽xxxxx| 国产精品护士白丝一区av| 免费精品视频在线| 欧美性受xxxx黑人xyx性爽| 国产精品欧美精品| 国产精品一级黄| 欧美成人综合网站| 日韩av网站在线观看| 在线观看国产91| 亚洲欧洲性图库| 成人毛片在线观看| 国产亚洲一二三区| 国产成人在线看| 久久久国产精品不卡| 欧美va亚洲va在线观看蝴蝶网| 色婷婷亚洲精品| 欧美区视频在线观看| 亚洲欧美激情小说另类| 国产精品1024久久| xnxx国产精品| 理论片日本一区| 91精品国产aⅴ一区二区| 亚洲成人在线观看视频| 欧美性猛交一区二区三区精品| 国产精品成人网| 99久久久免费精品国产一区二区| 欧美国产一区二区| 成人免费高清视频在线观看| 国产亚洲精品7777| 成人三级在线视频| 国产精品久久久久久久久久久免费看 | 欧美日韩国产中文| 亚洲v日本v欧美v久久精品| 欧美视频在线观看一区| 日韩在线一区二区三区| 欧美一区二区成人| 韩国精品在线观看| 中文字幕二三区不卡| 91免费国产视频网站| 一区二区三区精品在线| 色欧美88888久久久久久影院| 亚洲精品视频在线看| 欧美日本乱大交xxxxx| 日本 国产 欧美色综合| 久久久久久久久久电影| 成人自拍视频在线| 亚洲精品乱码久久久久| 欧美主播一区二区三区| 青青草伊人久久| 久久久国际精品| 91美女在线观看| 日韩成人av影视| 久久久久久麻豆| 色天天综合色天天久久| 日本一区中文字幕| 国产亚洲一区二区在线观看| 99久久婷婷国产精品综合| 亚洲午夜av在线| 精品国产一区二区国模嫣然| 成人高清视频在线| 香蕉影视欧美成人| 久久久久综合网| 91黄色免费观看| 久久超碰97中文字幕| 国产精品久久久久久久久图文区| 在线免费观看日韩欧美| 麻豆成人综合网| 国产精品福利一区二区三区| 在线播放国产精品二区一二区四区 | 国产日韩精品一区二区三区在线| 成人精品免费看| 奇米精品一区二区三区四区| 国产精品午夜在线| 日韩欧美一二区| 日本乱码高清不卡字幕| 国产毛片一区二区| 亚洲一区二区三区视频在线 | 亚洲图片欧美视频| 欧美国产精品中文字幕| 91精品欧美福利在线观看| 99re66热这里只有精品3直播| 日本特黄久久久高潮| 亚洲女人小视频在线观看| 久久奇米777| 欧美一区二区三区的| 欧美影片第一页| av在线不卡电影|