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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tutorial0.html

?? 一個小巧、好用的xml文檔 解析器
?? HTML
?? 第 1 頁 / 共 2 頁
字號:
</pre></div><p>This is a basic main() that shows how to create a default settings object tree, save it and load it again:<p><div class="fragment"><pre class="fragment">int main(void){	AppSettings settings;		settings.save("appsettings2.xml");	settings.load("appsettings2.xml");	return 0;}</pre></div><p>The following main() shows creation, modification, saving and then loading of a settings structure:<p><div class="fragment"><pre class="fragment">int main(void){	// block: customise and save settings	{		AppSettings settings;		settings.m_name="HitchHikerApp";		settings.m_messages["Welcome"]="Don't Panic";		settings.m_messages["Farewell"]="Thanks for all the fish";		settings.m_windows.push_back(WindowSettings(15,25,300,250,"BookFrame"));		settings.m_connection.ip="192.168.0.77";		settings.m_connection.timeout=42.0;		settings.save("appsettings2.xml");	}		// block: load settings	{		AppSettings settings;		settings.load("appsettings2.xml");		printf("%s: %s\n", settings.m_name.c_str(), 			settings.m_messages["Welcome"].c_str());		WindowSettings &amp; w=settings.m_windows.front();		printf("%s: Show window '%s' at %d,%d (%d x %d)\n", 			settings.m_name.c_str(), w.name.c_str(), w.x, w.y, w.w, w.h);		printf("%s: %s\n", settings.m_name.c_str(), settings.m_messages["Farewell"].c_str());	}	return 0;}</pre></div><p>When the save() and load() are completed (see below), running this main() displays on the console:<p><div class="fragment"><pre class="fragment">HitchHikerApp: Don't PanicHitchHikerApp: Show window 'BookFrame' at 15,25 (300 x 100)HitchHikerApp: Thanks for all the fish</pre></div><p><h2>Encode C++ state as XML </h2><p>There are lots of different ways to approach saving this to a file. Here's one:<p><div class="fragment"><pre class="fragment">void AppSettings::save(const char* pFilename){	TiXmlDocument doc;  	TiXmlElement* msg;	TiXmlComment * comment;	string s; 	TiXmlDeclaration* decl = new TiXmlDeclaration( "1.0", "", "" );  	doc.LinkEndChild( decl );  	TiXmlElement * root = new TiXmlElement(m_name.c_str());  	doc.LinkEndChild( root );  	comment = new TiXmlComment();	s=" Settings for "+m_name+" ";	comment-&gt;SetValue(s.c_str());  	root-&gt;LinkEndChild( comment );  	// block: messages	{		MessageMap::iterator iter;		TiXmlElement * msgs = new TiXmlElement( "Messages" );  		root-&gt;LinkEndChild( msgs );   		for (iter=m_messages.begin(); iter != m_messages.end(); iter++)		{			const string &amp; key=(*iter).first;			const string &amp; value=(*iter).second;			msg = new TiXmlElement(key.c_str());  			msg-&gt;LinkEndChild( new TiXmlText(value.c_str()));  			msgs-&gt;LinkEndChild( msg );  		}	}	// block: windows	{		TiXmlElement * windowsNode = new TiXmlElement( "Windows" );  		root-&gt;LinkEndChild( windowsNode );  		list&lt;WindowSettings&gt;::iterator iter;		for (iter=m_windows.begin(); iter != m_windows.end(); iter++)		{			const WindowSettings&amp; w=*iter;			TiXmlElement * window;			window = new TiXmlElement( "Window" );  			windowsNode-&gt;LinkEndChild( window );  			window-&gt;SetAttribute("name", w.name.c_str());			window-&gt;SetAttribute("x", w.x);			window-&gt;SetAttribute("y", w.y);			window-&gt;SetAttribute("w", w.w);			window-&gt;SetAttribute("h", w.h);		}	}	// block: connection	{		TiXmlElement * cxn = new TiXmlElement( "Connection" );  		root-&gt;LinkEndChild( cxn );  		cxn-&gt;SetAttribute("ip", m_connection.ip.c_str());		cxn-&gt;SetDoubleAttribute("timeout", m_connection.timeout); 	}	doc.SaveFile(pFilename);  }</pre></div><p>Running this with the modified main produces this file:<p><div class="fragment"><pre class="fragment">&lt;?xml version="1.0" ?&gt;&lt;HitchHikerApp&gt;    &lt;!-- Settings for HitchHikerApp --&gt;    &lt;Messages&gt;        &lt;Farewell&gt;Thanks for all the fish&lt;/Farewell&gt;        &lt;Welcome&gt;Don&amp;apos;t Panic&lt;/Welcome&gt;    &lt;/Messages&gt;    &lt;Windows&gt;        &lt;Window name="BookFrame" x="15" y="25" w="300" h="250" /&gt;    &lt;/Windows&gt;    &lt;Connection ip="192.168.0.77" timeout="42.000000" /&gt;&lt;/HitchHikerApp&gt;</pre></div><p><h2>Decoding state from XML </h2><p>As with encoding objects, there are a number of approaches to decoding XML into your own C++ object structure. The following approach uses TiXmlHandles.<p><div class="fragment"><pre class="fragment">void AppSettings::load(const char* pFilename){	TiXmlDocument doc(pFilename);	if (!doc.LoadFile()) return;	TiXmlHandle hDoc(&amp;doc);	TiXmlElement* pElem;	TiXmlHandle hRoot(0);	// block: name	{		pElem=hDoc.FirstChildElement().Element();		// should always have a valid root but handle gracefully if it does		if (!pElem) return;		m_name=pElem-&gt;Value();		// save this for later		hRoot=TiXmlHandle(pElem);	}	// block: string table	{		m_messages.clear(); // trash existing table		pElem=hRoot.FirstChild( "Messages" ).FirstChild().Element();		for( pElem; pElem; pElem=pElem-&gt;NextSiblingElement())		{			const char *pKey=pElem-&gt;Value();			const char *pText=pElem-&gt;GetText();			if (pKey &amp;&amp; pText) 			{				m_messages[pKey]=pText;			}		}	}	// block: windows	{		m_windows.clear(); // trash existing list		TiXmlElement* pWindowNode=hRoot.FirstChild( "Windows" ).FirstChild().Element();		for( pWindowNode; pWindowNode; pWindowNode=pWindowNode-&gt;NextSiblingElement())		{			WindowSettings w;			const char *pName=pWindowNode-&gt;Attribute("name");			if (pName) w.name=pName;						pWindowNode-&gt;QueryIntAttribute("x", &amp;w.x); // If this fails, original value is left as-is			pWindowNode-&gt;QueryIntAttribute("y", &amp;w.y);			pWindowNode-&gt;QueryIntAttribute("w", &amp;w.w);			pWindowNode-&gt;QueryIntAttribute("hh", &amp;w.h);			m_windows.push_back(w);		}	}	// block: connection	{		pElem=hRoot.FirstChild("Connection").Element();		if (pElem)		{			m_connection.ip=pElem-&gt;Attribute("ip");			pElem-&gt;QueryDoubleAttribute("timeout",&amp;m_connection.timeout);		}	}}</pre></div><p><h1>Full listing for dump_to_stdout </h1><p>Below is a copy-and-paste demo program for loading arbitrary XML files and dumping the structure to STDOUT using the recursive traversal listed above.<p><div class="fragment"><pre class="fragment">// tutorial demo program#include "stdafx.h"#include "tinyxml.h"// ----------------------------------------------------------------------// STDOUT dump and indenting utility functions// ----------------------------------------------------------------------const unsigned int NUM_INDENTS_PER_SPACE=2;const char * getIndent( unsigned int numIndents ){	static const char * pINDENT="                                      + ";	static const unsigned int LENGTH=strlen( pINDENT );	unsigned int n=numIndents*NUM_INDENTS_PER_SPACE;	if ( n &gt; LENGTH ) n = LENGTH;	return &amp;pINDENT[ LENGTH-n ];}// same as getIndent but no "+" at the endconst char * getIndentAlt( unsigned int numIndents ){	static const char * pINDENT="                                        ";	static const unsigned int LENGTH=strlen( pINDENT );	unsigned int n=numIndents*NUM_INDENTS_PER_SPACE;	if ( n &gt; LENGTH ) n = LENGTH;	return &amp;pINDENT[ LENGTH-n ];}int dump_attribs_to_stdout(TiXmlElement* pElement, unsigned int indent){	if ( !pElement ) return 0;	TiXmlAttribute* pAttrib=pElement-&gt;FirstAttribute();	int i=0;	int ival;	double dval;	const char* pIndent=getIndent(indent);	printf("\n");	while (pAttrib)	{		printf( "%s%s: value=[%s]", pIndent, pAttrib-&gt;Name(), pAttrib-&gt;Value());		if (pAttrib-&gt;QueryIntValue(&amp;ival)==TIXML_SUCCESS)    printf( " int=%d", ival);		if (pAttrib-&gt;QueryDoubleValue(&amp;dval)==TIXML_SUCCESS) printf( " d=%1.1f", dval);		printf( "\n" );		i++;		pAttrib=pAttrib-&gt;Next();	}	return i;	}void dump_to_stdout( TiXmlNode* pParent, unsigned int indent = 0 ){	if ( !pParent ) return;	TiXmlNode* pChild;	TiXmlText* pText;	int t = pParent-&gt;Type();	printf( "%s", getIndent(indent));	int num;	switch ( t )	{	case TiXmlNode::DOCUMENT:		printf( "Document" );		break;	case TiXmlNode::ELEMENT:		printf( "Element [%s]", pParent-&gt;Value() );		num=dump_attribs_to_stdout(pParent-&gt;ToElement(), indent+1);		switch(num)		{			case 0:  printf( " (No attributes)"); break;			case 1:  printf( "%s1 attribute", getIndentAlt(indent)); break;			default: printf( "%s%d attributes", getIndentAlt(indent), num); break;		}		break;	case TiXmlNode::COMMENT:		printf( "Comment: [%s]", pParent-&gt;Value());		break;	case TiXmlNode::UNKNOWN:		printf( "Unknown" );		break;	case TiXmlNode::TEXT:		pText = pParent-&gt;ToText();		printf( "Text: [%s]", pText-&gt;Value() );		break;	case TiXmlNode::DECLARATION:		printf( "Declaration" );		break;	default:		break;	}	printf( "\n" );	for ( pChild = pParent-&gt;FirstChild(); pChild != 0; pChild = pChild-&gt;NextSibling()) 	{		dump_to_stdout( pChild, indent+1 );	}}// load the named file and dump its structure to STDOUTvoid dump_to_stdout(const char* pFilename){	TiXmlDocument doc(pFilename);	bool loadOkay = doc.LoadFile();	if (loadOkay)	{		printf("\n%s:\n", pFilename);		dump_to_stdout( &amp;doc ); // defined later in the tutorial	}	else	{		printf("Failed to load file \"%s\"\n", pFilename);	}}// ----------------------------------------------------------------------// main() for printing files named on the command line// ----------------------------------------------------------------------int main(int argc, char* argv[]){	for (int i=1; i&lt;argc; i++)	{		dump_to_stdout(argv[i]);	}	return 0;}</pre></div><p>Run this from the command line or a DOS window, e.g.:<p><div class="fragment"><pre class="fragment">C:\dev\tinyxml&gt; Debug\tinyxml_1.exe example1.xmlexample1.xml:Document+ Declaration+ Element [Hello] (No attributes)  + Text: [World]</pre></div><p><em> Authors and Changes <ul><li>Written by Ellers, April, May, June 2005  </li><li>Minor edits and integration into doc system, Lee Thomason September 2005  </li><li>Updated by Ellers, October 2005  </li></ul></em> <hr size="1"><address style="align: right;"><small>Generated on Tue Sep 19 19:04:34 2006 for TinyXml by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address></body></html>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丁香婷婷综合激情五月色| 亚洲视频香蕉人妖| 在线不卡欧美精品一区二区三区| 国产精品一区二区无线| 日韩电影在线一区二区三区| 亚洲成人综合视频| 午夜一区二区三区在线观看| 亚洲精品久久嫩草网站秘色| 一级特黄大欧美久久久| 亚洲国产视频a| 五月天一区二区三区| 香蕉乱码成人久久天堂爱免费| 亚洲成人免费看| 免费成人小视频| 老司机一区二区| 国产毛片精品国产一区二区三区| 国产乱人伦精品一区二区在线观看| 激情综合色综合久久| 国产99久久久国产精品免费看| 成人福利在线看| 欧美视频精品在线| 欧美成人a视频| 国产欧美精品日韩区二区麻豆天美| 日本一区二区三区免费乱视频| 国产精品美女久久久久久久久久久| 国产精品热久久久久夜色精品三区 | 在线看不卡av| 欧美疯狂性受xxxxx喷水图片| 日韩一级大片在线| 久久精品人人做人人爽人人| 亚洲欧洲日产国产综合网| 亚洲伊人色欲综合网| 免费看日韩a级影片| 国产91在线观看| 99re热这里只有精品视频| 欧美视频在线观看一区二区| 日韩欧美国产1| 亚洲欧美日韩国产另类专区 | 91精品国产91综合久久蜜臀| 久久九九全国免费| 亚洲电影第三页| 国产在线精品国自产拍免费| 91污片在线观看| 欧美电影免费观看高清完整版在线观看| 国产三级精品视频| 石原莉奈在线亚洲二区| 成人国产精品免费网站| 日韩欧美综合一区| 亚洲综合成人网| 国产精品香蕉一区二区三区| 欧美片网站yy| 亚洲啪啪综合av一区二区三区| 久久国产视频网| 日本伦理一区二区| 亚洲国产精华液网站w| 免费高清在线一区| 欧美在线一区二区三区| 国产精品国产三级国产a| 激情五月婷婷综合网| 在线播放欧美女士性生活| 樱花影视一区二区| 波多野结衣一区二区三区| 欧美精品一区二区在线观看| 日韩av不卡一区二区| 欧美性高清videossexo| 最新热久久免费视频| 国产乱码精品一品二品| 精品美女一区二区三区| 乱一区二区av| 日韩欧美一卡二卡| 美女看a上一区| 欧美一区二区福利视频| 日韩精品一二三四| 91.成人天堂一区| 看国产成人h片视频| 欧美视频一区二区三区| 亚洲一区二区五区| 欧美色综合久久| 亚洲高清视频的网址| 欧美日韩欧美一区二区| 亚洲r级在线视频| 欧美日韩免费高清一区色橹橹 | 欧美xfplay| 黄页网站大全一区二区| 2021久久国产精品不只是精品| 久久国产剧场电影| 国产亚洲精品福利| 成人激情校园春色| 亚洲精品国产第一综合99久久| 欧美自拍丝袜亚洲| 日本午夜一本久久久综合| 日韩欧美123| 高潮精品一区videoshd| 亚洲欧美在线另类| 欧美在线观看视频一区二区三区| 亚洲bt欧美bt精品777| 欧美精品vⅰdeose4hd| 蜜桃视频在线观看一区二区| 久久亚洲精华国产精华液| 成人黄动漫网站免费app| 亚洲激情在线播放| 日韩一区二区三区视频| 国产成人av电影在线| 亚洲青青青在线视频| 精品视频全国免费看| 久久er精品视频| 国产精品天天看| 欧美色视频在线| 久久久99精品免费观看不卡| 成人免费毛片嘿嘿连载视频| 亚洲男人的天堂网| 欧美一级免费大片| www.亚洲色图| 五月天精品一区二区三区| 久久一区二区三区国产精品| 91久久精品一区二区二区| 黄色日韩三级电影| 亚洲一本大道在线| 国产亚洲精品中文字幕| 欧美日韩国产精选| 成人一区二区视频| 日韩av不卡一区二区| 亚洲免费观看高清完整版在线观看熊| 51久久夜色精品国产麻豆| 免费人成在线不卡| 有坂深雪av一区二区精品| 久久久国际精品| 日韩午夜精品视频| 色婷婷综合激情| 福利一区二区在线观看| 美国三级日本三级久久99| 亚洲中国最大av网站| 国产精品久久99| 久久人人超碰精品| 91精品国产乱| 欧美日韩日日摸| 在线日韩一区二区| 国产一区视频网站| 麻豆国产精品视频| 亚洲1区2区3区视频| √…a在线天堂一区| 国产欧美一区二区在线观看| 精品久久人人做人人爽| 91麻豆精品国产91久久久久久| 91免费小视频| 99精品视频在线观看| 国产一区二区免费视频| 精品一区二区三区免费毛片爱 | 精品国产不卡一区二区三区| 欧美日本在线看| 欧美性一二三区| 日本高清无吗v一区| 91婷婷韩国欧美一区二区| 99久久免费精品| 91蝌蚪国产九色| 91国偷自产一区二区开放时间| 不卡视频一二三| 成人小视频在线观看| 成人国产免费视频| 99久久国产综合精品色伊| av午夜精品一区二区三区| 91欧美一区二区| 欧美又粗又大又爽| 欧美剧情电影在线观看完整版免费励志电影| 色吊一区二区三区| 欧美另类高清zo欧美| 这里只有精品电影| 26uuu亚洲综合色欧美| 久久精品一级爱片| **网站欧美大片在线观看| 亚洲色图欧美激情| 午夜在线电影亚洲一区| 久久国产精品露脸对白| 国产成都精品91一区二区三| 成人久久18免费网站麻豆| 色老综合老女人久久久| 欧美一区二区三区人| 久久久精品欧美丰满| 亚洲男女一区二区三区| 三级欧美在线一区| 国产一区二区在线免费观看| av成人老司机| 9191成人精品久久| 日本一区二区三区视频视频| 亚洲一二三四区不卡| 另类小说一区二区三区| 99在线精品视频| 日韩一区二区在线看片| 国产精品免费观看视频| 首页综合国产亚洲丝袜| 成人一区二区三区视频在线观看 | 99re亚洲国产精品| 欧美精品日韩综合在线| 日本一区免费视频| 亚洲超丰满肉感bbw| 国产精品99久| 3d成人h动漫网站入口| 国产三级精品三级在线专区| 午夜精品久久久久久| 成人激情图片网|