tinyxml

C++中头文件与源文件的作用详解

安稳与你 提交于 2020-08-14 11:30:39
一、C++ 编译模式 通常,在一个 C++ 程序中,只包含两类文件―― .cpp 文件和 .h 文件。其中,.cpp 文件被称作 C++ 源文件,里面放的都是 C++ 的源代码;而 .h 文件则被称作 C++ 头文件,里面放的也是 C++ 的源代码。 C++ 语言支持"分别编译"(separatecompilation)。也就是说,一个程序所有的内容,可以分成不同的部分分别放在不同的 .cpp 文件里。.cpp 文件里的东西都是相对独立的,在编译(compile)时不需要与其他文件互通,只需要在编译成目标文件后再与其他的目标文件做一次链接(link)就行了。比如,在文件 a.cpp 中定义了一个全局函数 "void a(){}",而在文件 b.cpp 中需要调用这个函数。即使这样,文件 a.cpp 和文件 b.cpp 并不需要相互知道对方的存在,而是可以分别地对它们进行编译,编译成目标文件之后再链接,整个程序就可以运行了。 这是怎么实现的呢?从写程序的角度来讲,很简单。在文件 b.cpp 中,在调用 "void a()" 函数之前,先声明一下这个函数 "voida();",就可以了。这是因为编译器在编译 b.cpp 的时候会生成一个符号表(symbol table),像 "void a()" 这样的看不到定义的符号,就会被存放在这个表中。再进行链接的时候

Qt之QDomDocument操作xml文件-模拟ini文件存储

早过忘川 提交于 2020-04-27 05:03:15
一、背景   不得不说Qt是一个很强大的类库,不管是做项目还是做产品,Qt自身封装的东西就已经非常全面了,我们今天的这篇文章就是模拟了Qt读写ini文件的一个操作,当然是由于一些外力原因,我们决定自己来完善下这个功能。好的,那么现在就让我们隆重的请出今天的主角--QSettings。这个类能干嘛呢? 答案就是:读写注册表或者读写ini文件,这对于我们做应用程序时记录一些可持久化数据非常有用。 二、QSettings访问ini文件   QSettings访问ini文件相对来说比较简单,我们只需要构造一个QSettings对象,传入文件名称和文件存储格式即可,如图1所示。但同时QSettings也有一些局限,如下: 1、 QSettings的编码问题 (QTBUG15543、QTBUG19552) 2、QSettings的key不能为中文 3、当在一个嵌套作用域多次构造QSettings时并设置了编码,此时访问文件设置的编码会失效   由于QSettings有一些限制,也就引出了我们这篇文章的内容,使用xml模拟ini文件,下面我们主要分析下怎么使用xml文件模拟ini文件,需要的接口并不多,读、写、新增和删除。 图1 QSettings读写ini 三、xml文件读写   读写xml文件的方式有很多,Qt提供了2种比较常用的方式:DOM和SAX,详情可以参看:

TinyXML用法小结

不羁的心 提交于 2020-02-02 00:22:16
TinyXML用法小结 1. 介绍 Tinyxml的官方网址: http://www.grinninglizard.com 官方介绍文档: http://www.grinninglizard.com/tinyxmldocs/tutorial0.html 在TinyXML中,根据XML的各种元素来定义了一些类: TiXmlBase:整个TinyXML模型的基类。 TiXmlAttribute:对应于XML中的元素的属性。 TiXmlNode:对应于DOM结构中的节点。 TiXmlComment:对应于XML中的注释 TiXmlDeclaration:对应于XML中的申明部分,即<?versiong="1.0" ?>。 TiXmlDocument:对应于XML的整个文档。 TiXmlElement:对应于XML的元素。 TiXmlText:对应于XML的文字部分 TiXmlUnknown:对应于XML的未知部分。 TiXmlHandler:定义了针对XML的一些操作。 根据下图来说明常用的类对应的文本格式: <?xml version="1.0" ?> //TiXmlDeclaration,声明 <MyApp> //TiXmlElement,元素 <!-- Settings for MyApp -->//TiXmlComment,注释 <Messages>//TiXmlElement

C++ 使用TinyXML解析XML文件

拈花ヽ惹草 提交于 2020-02-02 00:20:43
1.介绍   读取和设置xml配置文件是最常用的操作, TinyXML是一个开源的解析XML的C++解析库,能够在Windows或Linux中编译。这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树。     下载TinyXML的网址: http://www.grinninglizard.com/tinyxml/   使用TinyXML只需要将其中的6个文件拷贝到项目中就可以直接使用了,这六个文件是: tinyxml.h、tinystr.h、tinystr.cpp、tinyxml.cpp、tinyxmlerror.cpp、tinyxmlparser.cpp。 2.读取XML文件 如读取文件a.xml: <ToDo> <Item priority="1"> <bold> Book store! </bold> </Item> <Item priority="2"> book1 </Item> <Item priority="2"> book2 </Item> </ToDo> 读取代码如下: 1 #include "tinyxml.h" 2 #include <iostream> 3 #include <string> 4 5 using namespace std; 6 7 enum SuccessEnum {FAILURE,

C++读取XML,tinyXml的使用

Deadly 提交于 2020-02-02 00:18:55
前言:   最近在开发的过程中,有个需求是对xml进行格式转化,从一种格式转化到另外一种格式.因此,就需要读取xml进行处理.原本打算写成工具在linux下运行,不过后来考虑到和系统结合,最后也就使用了前台js转了.反正都是读取xml,什么技术转不都是一样的么?   不过刚开始还是对要使用的技术做了一定的探究.c++要读取xml有很多种方式.比较又名的有:   rapidXML(这个是网上介绍的,没用过)    Xerces-C++ XML Parser :通常来说,读取XML的方法都是将整个文本进行读取,然后构建成DOM Tree,之后进行遍历等操作.这个Parser除了支持构建DOM Tree的方式之外,还支持类似于回调函数的方式进行处理(SAX,SAX2).在读到相应的节点然后调用函数进行处理.DOM Tree的方式好处是简单,操作很方便,但是劣势也是很明显:需要把整个XML读进之后才能做处理.如果XML很大,那内存就支撑不住了.SAX,SAX2的作用就在此.其可以支持很大的XML,因为其是相当于事件式的处理方式,不需要构建DOM Tree.不过就是比较麻烦.   TinyXML: 这个就是接下来要介绍的库了.取名Tiny,意在编写一个轻量级的处理基本XML的工具.因此,其支持的特性有限.下面列出了其不支持的功能:    TinyXML doesn't parse or

Parsing XML Elements using TinyXML

心已入冬 提交于 2020-01-22 14:52:10
问题 UPDATE: Still not working :( I have updated the code portion to reflect what I currently have. This should be a pretty easy question for people who have used TinyXML. I'm attempting to use TinyXML to parse through an XML document and pull out some values. I figured out how to add in the library yesterday, and I have successfully loaded the document (hey, it's a start). I've been reading through the manual and I can't quite figure out how to pull out individual attributes. After Googling

Parsing XML Elements using TinyXML

廉价感情. 提交于 2020-01-22 14:52:07
问题 UPDATE: Still not working :( I have updated the code portion to reflect what I currently have. This should be a pretty easy question for people who have used TinyXML. I'm attempting to use TinyXML to parse through an XML document and pull out some values. I figured out how to add in the library yesterday, and I have successfully loaded the document (hey, it's a start). I've been reading through the manual and I can't quite figure out how to pull out individual attributes. After Googling

Visual Studio 2005 and Tinyxml - xml file location

非 Y 不嫁゛ 提交于 2020-01-17 03:24:04
问题 For some reason my Tinyxml file which is created via visual studio 2005 (c++) is saved on my desktop instead of the debug folder or in the program's root folder. if anyone knows about some way to tell vs2005 to save the tinyxml create file somewhere else? I tried that with eclipse and it saved the file in the program's root folder, which is what I'm trying to do. thanks. EDIT: I'm doing a BHO (Browser Helper Object), this is an add-on Internet Explorer. so when I run my program the 'exe' is

Deep Copy an XML via TinyXML

假装没事ソ 提交于 2020-01-05 07:57:22
问题 I am using tinyxml. How do I duplicate or create a copy of an existing XMLDocument? http://www.grinninglizard.com/tinyxmldocs/classTiXmlDocument.html#a4e8c1498a76dcde7191c683e1220882 I went through this link that says using Clone to replicate a node. But this is protected and I do not want to go for deriving a class out of this and the like. I also do not want to save the existing XMLDocument to a file and then making another XMLDocument object read the file to have a copy of it. I am also

C++生成和解析XML文件

余生长醉 提交于 2020-01-01 16:02:02
1.xml 指可扩展标记语言(EXtensible Markup Language) 2.xml 是一种标记语言,类似html 3.xml 的设计宗旨是传输数据,而非显示数据 4.xml 标签没有被预定义。需要自行定义标签 XML与HTML区别 1.xml 不是 html 的替代。 2.xml 和 html 为不同的目的而设计: 3.xml 被设计为传输和存储数据,其焦点是数据的内容。 4.html 被设计用来显示数据,其焦点是数据的外观。 5.html 旨在显示信息,而 xml 旨在传输信息。 第三方库 XML第三方解析库,选用TinyXML,TinyXML也是一个开源的解析XML解析库,使用简单正如其名,用于C++开发,支持Windows和Linux。TinyXML通过DOM模型遍历和分析XML。 官网地址: http://www.grinninglizard.com/tinyxml/ 生成XML文件 TiXmlDocument xmlDocument; // 添加XML声明 xmlDocument.LinkEndChild(new TiXmlDeclaration( "1.0", "GBK", "" )); // 添加根元素 TiXmlElement * xmlRoot = new TiXmlElement("root"); xmlDocument.LinkEndChild