Debug时如何跳过(不执行)某些代码

在DEBUG界面, 光标定位到想跳至的代码行, 从右键菜单中选择Goto Statement,

 

或者从Debugger菜单中选择:

 

 

执行结果如下:

可见代码确实被跳过了, 这个在实际工作中, 尤其是生产机的调试中还是很有用处的.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
『软件简介』 "鹤望兰·流 - 电子钢琴" 是由鹤望兰·流开发的用电脑的声卡、键盘、鼠标来模拟电子钢琴的绿色免费软件。本软件能够在电脑上全面模拟电子钢琴的弹奏效果,其界面逼真,操作简单,使用方便。 本软件主要有三个功能:手动弹奏、自动弹奏、录制和回放。您可以自由弹奏乐曲,也可以将曲谱按规则编辑成文件,再用本软件打开文件,让本程序自动为您弹奏,还可以将弹奏过程录制下来,即回放弹奏过程,或保存为录制乐谱文件(.pianoR 文件),再打开此类文件进行播放,可以让您更好的了解您的弹奏情况改进弹奏技巧。自动弹奏专用的文件格式为——.piano2 文件,您可以方便的把乐曲乐谱翻译成此格式的文件,让本软件自动为您弹奏,您还可以在文件中为乐谱添加歌词,弹奏可以同步显示歌词。 此外,程序还自带了多个乐谱文件,如: Beyond The Sea(拉梅尔).piano2 C大调卡农.piano2 C大调卡农2.piano2 Endless Love.piano2 Kiss the Rain.piano2 Kiss the Rain2.piano2 《卡农变奏曲》.piano2 《童话》钢琴简谱.piano2 一千零一夜.piano2 不是因为寂寞才想你.piano2 化蝶.piano2 午后的出发-午后的旅行.piano2 卡农-Canon.piano2 后来.piano2 夜的钢琴曲(五).piano2 天空之城完美简单版.piano2 天空之城完美简单版2.piano2 婚礼进行曲.piano2 我心永恒-My Heart Will Go On.piano2 星月神话.piano2 李煜《虞美人》词.piano2 梦中的婚礼.piano2 梦中的婚礼2.piano2 梦醒分.piano2 欢乐颂.piano2 此情可待-Right Here Waiting.piano2 水边的阿狄丽娜-Ballade for Adeline.piano2 秋日私语-A Comme Amour.piano2 童话.piano2 第一次.piano2 美丽的神话.piano2 致爱丽丝.piano2 荷塘月色.piano2 调试计器中的信息《卡农变奏曲》.piano2 追梦人.piano2 追梦人(无歌词,带和弦).piano2 雪中情.piano2 她非常小巧,只有一个可执行文件,不需要安装,功能非常强大,界面简洁、美观大方,完全免费,开放源代码。 『主要功能』 1、用电脑的声卡、键盘、鼠标来模拟电子钢琴支持鼠标、键盘操作,操作与声音同步,没有延迟。 2、支持手动弹奏、自动弹奏、录制和回放,支持和弦。 3、支持一百多种不同音色选择。 4、开发了一种专用的文件格式——.piano2 文件(电子钢琴乐谱文件)。 5、编辑乐谱文件,可自动为您弹奏,支持左右手谱子同步弹奏,且弹奏可以同步显示歌词。 6、自带了多个乐谱文件。 7、完全免费使用,开放源代码。 8、更多,期待您的发现…… 『联系方式』 如果大家有什么好的歌曲请回复到我的空间,我会不定期更新乐谱, 对于支持喜欢本软件和提供歌曲的朋友表示真挚的感谢! 对于提出建议的朋友,我只能说我会尽力的完善和更新软件 谢谢大家。。。。。。。。。谢谢! QQ:252461539 E-Mail:[email protected] 主页:http://hewanglan.ys168.com 『更新历史』 ------------------------------------------------------------------------- 2.0.5 2013-11-08~12 ------------------------------------------------------------------------- 1、修正暂停拖动进度条导致后续无法暂停或停止的问题!(2013-11-08) 2、暂停,增加进度条微调功能,可以一次调节一行!(2013-11-08) 3、增加对黑键上的音符的表示方法。 如:.b2 / .#1;.b2;.#1。它们对应于同一个音。 在编辑乐谱文件,可以选用任意一个,减少了乐谱编辑的麻烦。 但录制乐谱,程序只会使用第一个表示方法。(2013-11-08) 4、增加钢琴键盘按键按下、弹起的事件响应。(2013-11-12) ------------------------------------------------------------------------- 2.0.4 2013-11-06 ------------------------------------------------------------------------- 1、优化代码,修正小问题!(2013-11-06) 2、改用高精度计器(1毫秒级别的,修正了原计器控件问题。)播放。 若传入命令行参数设置计器间隔为1毫秒,左右手谱同步问题已基本解决! 一般自动识别,若是左右手谱,自动设置为1毫秒!(2013-11-06) 3、增加全部命令行参数演示批处理文件。(2013-11-06) 未完成: 3、录制过程也可改用计器,可记入休止符?! 4、增加自定义键盘按键设置!电脑键盘图片资源已准备好。(工作量似乎不小!) ------------------------------------------------------------------------- 2.0.3 2013-11-04~05 ------------------------------------------------------------------------- 1、优化代码!(2013-11-04) 2、修正暂停播放手动弹奏无法发声的问题。(2013-11-05) 3、特别注意:播放乐谱采用全新的机制! 左右手谱基本能同步播放了! 正在播放无法退出程序的问题也解决了。 同步问题,采用高精度计器(1毫秒级别的)可能会有所改善!(2013-11-05) ------------------------------------------------------------------------- 2.0.2 2013-11-02~ ------------------------------------------------------------------------- 1、修正录制过程中改变乐器(声音)无效的问题!(2013-11-02) 2、左右手谱的一次播放,但是,程序占用系统资源高, 而且,左右手谱子的同步有点问题!左手谱子没有进度条显示,进度条也不能拖动! 通过打开文件对话框打开的谱子,也无法播放左手谱内容!(2013-11-02) ------------------------------------------------------------------------- 2.0.1 2013-10-31, 2013-11-01~02 ------------------------------------------------------------------------- 1、再增加调试信息,播放、录制显示按键间。(2013-10-31) 2、添加几个乐谱。(2013-10-31) 3、特别:增加钢琴白键、黑键按下的颜色设置属性!!!(2013-10-31) 4、支持将钢琴上88个键分成左右手的,左右手的键按下颜色可分别设置。(2013-11-01) 5、完善录制过程,支持录制过程即回放!(2013-11-02) 6、左右手谱的一次同步播放?未完成!!! ------------------------------------------------------------------------- 2.0.0 2013-10-29~30 ------------------------------------------------------------------------- 1、优化乐谱弹奏过程(按键弹起)。(2013-10-29) 2、补充对.piano2文件格式的说明。(2013-10-29) 3、尝试改用高精度计器,想解决左右手谱子同步问题,依然不行! 看来问题在延函数,不在计器?!(2013-10-29) 4、增加录制功能,可将手动弹奏过程录制成文件(.pianoR),供下次回放。 注意:录制只考虑键按下弹起之间的间间隔,中间的停顿不计入录制文件。 录制某些候可能因按键间太短,有一些失真(播放速度很快)。 (2013-10-29~30) ------------------------------------------------------------------------- 1.0.5 2013-10-27~ ------------------------------------------------------------------------- 1、增加调试模式显示信息量(拍子,速度)。(2013-10-27) 2、增加乐谱编辑说明(拍子强弱,和弦)。(2013-10-27) ------------------------------------------------------------------------- 1.0.4 2013-10-24~25 ------------------------------------------------------------------------- 1、修正正在播放拖入新乐谱文件乐器、曲调可能不正确的问题!(2013-10-24~25) 2、修正暂停标签显示问题!(2013-10-24) 3、增加在窗体其他位置按下鼠标可拖动窗体移动功能。(2013-10-25) 4、增加命令行参数:-Top 让程序在前段显示。(2013-10-25) 5、增加调试模式,可显示一些信息。(2013-10-25) 6、修正进度百分比显示的小问题。(2013-10-25) ------------------------------------------------------------------------- 1.0.3 2013-10-24 ------------------------------------------------------------------------- 1、整理代码,程序改名,恢复命令行参数:/T t 。 正在播放,无法关闭程序!播放线程问题!!!(2013-10-24) 2、重新用 Timer 控件播放!(2013-10-24) ------------------------------------------------------------------------- 1.0.2 2013-10-23~24 ------------------------------------------------------------------------- 1、不用 Timer 控件播放,改用循环播放!解决左右手谱不同步问题? 还是无法解决,计误差?!且现在窗体某些动作事件会打断播放?! 正在播放,无法关闭程序!!!(2013-10-23) 2、修正音符行数问题。(2013-10-23) 3、整理代码,去命令行参数:/T t 。(2013-10-23) 4、添加几个乐谱。(2013-10-24) ------------------------------------------------------------------------- 1.0.1 2013-10-21~23 ------------------------------------------------------------------------- 1、添加乐谱编辑说明和几个乐谱。(2013-10-21) 音符强弱定义.txt 后来.piano2 致爱丽丝.piano2 童话.piano2 2、一曲完毕后,自动从头再来。(2013-10-22) 3、打开 .piano2 文件出错(编谱有误),显示错误的行号,行的文字内容, 方便查找改正!(2013-10-22) 4、修正拖动进度条当前播放间显示不正确的问题。(2013-10-22) 5、增加命令行参数的处理,为了同启动多个进程弹奏左右手都有的谱子? 弹奏还是不同步!!!(2013-10-22) 命令行参数: -debug (调试模式) /F ".piano2文件完整路径" /C n /X x /Y y /T t n:频道值,0~15;x,y:窗体左上角坐标(x,y); t:最小间间隔,毫秒。与其他参数不同,在程序运行中会一直使用此值! 各个参数可以单独出现,顺序不限! 6、修改音符值计算,支持直接输入多少拍(用(b)表示,b代表多少拍。) 主要用于简谱弧线下的音符相同,人工计算需要弹多少拍。(2013-10-23) 7、增加进度显示,可显示播放多少行,百分比。(2013-10-23) ------------------------------------------------------------------------- 1.0.0 2013-10-06~2013-10-20 ------------------------------------------------------------------------- 相比 电子钢琴 Ver 1.0.3 钢琴键盘,更加美观,做成控件,控件大小布局更方便; 乐谱模型,更加准确,音符值计算更好,支持几个音同弹奏(几个键同按下),每个音符的强弱也能体现; 音调变化,12个大调,变调,键位更加生动具体; 乐谱编辑说明,更有调理,并附实例。 频道数,变为16个(0~15)。 参考资料:MIDI音乐知识,2个VB MIDI钢琴代码,读取乐谱文件功能源码,虞美人简线对照谱。 附:电脑键盘按键不能改变设置,默认使用 电子钢琴 Ver 1.0.3 的默认按键设置。 乐谱播放控制功能不完善。
98下获取当前路径.cmd cdd.cmd cmd.exe CMD加密.txt CMD命令速查手册.cmd config.ini C盘转换为NTFS格式.cmd date.txt debug生成取色按钮程序.bat debug生成取色按钮程序.cmd dir.bat dos下重启.bat Fjcyz.bat for.txt IE 界面批处理通讯录.cmd IE主页修改.bat IE修复.cmd install.CMD jacksi.bat list.ini lmod.com OptimizeXp.bat QQ精简.bat QQ精简.cmd readme.txt RUN.bat set.txt shell.bat SHELL.PIF Shell.reg svc2kxp.cmd svc2kxp深山红叶汉化版本.cmd sxs.exe 的查杀.bat sz.reg转换成reg.bat.bat un3721.bat un3721.reg USB.BAT WENJIAN.txt win2000关机命令.bat Windows安全优化小助手.cmd xp下确定最后的盘符.bat XP服务优化批处理.bat YS从桌面复制文件到其他地方.bat 一键清理系统垃圾文件.bat 下一行数字和上一行显示在同一行.cmd 不显示输入密码.cmd 不显示隐藏文件.bat 与某人的QQ临对话.cmd 两整数相除的批处理.cmd 中文数字转换为阿拉伯数字.cmd 中文显示ping结果.bat 九九乘法表.cmd 九宫格图案.cmd 乱序重列某类文件.cmd 交换两个变量的值而不使用临变量.bat 交换两个变量的值而不使用临变量.cmd 人民币大小写互转程序.cmd 人民币金额小写转大写.cmd 今天访问过的程序文件所在目录.cmd 以文件夹名为名建立文本文件.cmd 使用WMI别名获取CPU信息.bat 使用说明.txt 保留空行替换字符串.cmd 修改IP跟电脑名.bat 全盘删除所有文件夹下的_desktop.ini.bat 全盘删除每个文件夹下的指定文件.cmd 全盘搜索指定文件.cmd 全盘查找QQ.exe并执行.cmd 全盘禁止运行指定程序.cmd 公交线路.txt 公交线路查询.bat 关闭IDE通道检测.bat 分离路径和文件名.cmd 列举水产品最高&最低价记录.cmd 列举进程.bat 创建url格式的快捷方式.cmd 删除N天之前的文件.cmd 删除当前目录下及其子文件夹中所有的空文件夹.cmd 删除所有以数字命名的文件夹.cmd 删除指定文件夹之外的其他文件夹和文件.cmd 删除指定路径下指定文件及文件夹外的所有文件及文件夹2.bat 删除某些文件夹之外的目录.cmd 删除重复行.cmd 判断光驱是否可用.bat 判断光驱里有无光盘.bat 判断分区格式.bat 判断是文件还是文件夹.cmd 判断驱动器类型.cmd 刷新策略.bat 加密代码.cmd 勾股数算法.cmd 十进制转二进制.cmd 十进制转十六进制.cmd 去字符串不同部位的空格.cmd 去字符串头所有的0.cmd 去数值中可能存在的负号.cmd 去最大最小值后求剩余数组平均值.cmd 反序列出文本的每行内容.cmd 反序显示输入内容.cmd 取得硬盘数.bat 变色+翻滚字符.bat 变色+翻滚字符.cmd 变量截取实例.bat 变量的多级嵌套.bat 变量的多级嵌套.cmd 只修改年份的批处理.bat 右键添加bat.bat 右键添加打开MS-DOS.bat 在所有文件夹下建立随机文件.cmd 多行文本拼接成一行.cmd 娱乐进度条.bat 娱乐进度条.cmd 字母大小写转换.cmd 定关机.cmd 对加密的代码进行解密处理.bat 对加密的代码进行解密处理.cmd 对含有数字的文件进行改名操作.cmd 对数字进行排序.cmd 局域网扫描批处理.txt 屏幕炸弹.bat 建立回收站.cmd 弹出对话框.bat 快速清理垃圾文件.bat 感情进度条.bat 感情进度条.cmd 打开控制面板中的某项.cmd 打开系统属性.cmd 批处理加密.bat 批处理生成图片.bat 批处理生成图片.cmd 批处理程序代码.rar 批处理解密.bat 批量改名.bat 批量文件CAB 打包工具.cmd 把一个数拆分为几个数的和.cmd 把指定文件中的指定位置的数字相加.cmd 把秒转换为天小分秒的格式.cmd 把首行和尾行互换.cmd 抛弃路径尾部指定层次的字符串.cmd 拼接相临的奇偶行文本内容.cmd 指定图片路径换桌面.bat 按创建间显示完整路径.cmd 按扩展名分类.bat 按软件分类建立文件夹.cmd 换桌面.bat 探测空文件夹.cmd 提取两个文件内容的不同之处.cmd 提取文件(夹)属性.cmd 提取用户列表.cmd 搞笑开机.bat 收集系统信息.cmd 改IP;网关;CDKey;网络号.cmd 改变我的文档路径.bat 改变我的文档路径到D盘.bat 改变窗口颜色并显示当前颜色代码.cmd 改名复制文件.cmd 文件备份器V2.3修改版2.cmd 文件夹伪装.TXT 文件归类整理器 V1.1(子目录版).bat 文件归类整理器 V1.1(指定路径带子目录版).bat 文件归类整理器(当前目录版).bat 文件数目分类统计.cmd 断开网络联结.bat 无限制实数加减运算脚本.cmd 星光闪烁.bat 星光闪烁.cmd 显示c盘~z盘.bat 显示只有指定个数字符的行.cmd 显示各分区剩余空间情况.cmd 显示当面途径DIR.bat 显示所有分区的剩余空间(以MB为单位).cmd 显示本机用户帐号信息.cmd 显示某两个字符及其之间的字符.cmd 显示用户名.bat 显示磁盘分区数.cmd 显示网络配置.bat 显示翻滚字符.bat 显示进度.bat 显示进度.cmd 显示随机的5个数.cmd 显示隐藏文件.bat 更改电源管理方式.bat 更改盘符.bat 替换系统主题.cmd 最小化运行批处理.bat 最小化运行批处理.cmd 枚举当前目录及子目录大小.bat 枚举显示.bat 查找偶数行内容.cmd 查找最新的文件.bat 查找行中第一个数字串.cmd 查杀效果图.bat 查看工作组.bat 查看开机自启动程序的完整路径.cmd 查看用户是否存在.bat 查看电脑硬件信息.bat 查看进程使用的端口.bat 查看驱动器.bat 校对间.cmd 检查网络信息.bat 检测IP格式是否正确.cmd 检测光驱中是否有盘.cmd 模拟2K开机进度条.bat 模拟2K开机进度条.cmd 模拟黑客帝国数码雨.bat 每6行拼接为一行.cmd 比较两个文件夹下文件名的异同.cmd 水仙花数算法.cmd 求一列数所有不同组合的和.cmd 求最大公约数和最小公倍数.cmd 注册右键.reg 测试网络是否通畅.cmd 添加环境变量.cmd 清空指定大小的文件夹.cmd 清除威金(logo_1,熊猫烧香)病毒最新变种工具.bat 清除熊猫内存病毒.bat 理解字符截取功能.cmd 生成0-99之间的随机数列.cmd 用指定字符替换指定内容.cmd 用某行内容替换特定字符.cmd 用随机数做四则运算.cmd 画圆角矩形框.cmd 百度关键字搜索.bat 百钱买百鸡的买法.cmd 禁止保留文档记录.bat 简介.txt 篮球飞人火爆版.cmd 系统补丁自动升级.cmd 系统补丁自动安装.cmd 结束进程.bat 给每个盘添加卷标.cmd 统计重复次数并排序.cmd 维护版.bat 网络PING包查询.bat 老外写的系统文件替换.cmd 老毛桃制作的 WinPE 专用安装工具.cmd 自动改回主页.bat 自定义配置网络ip、网关、dns.bat 英汉互译.bat 英汉互译.txt 获取当前目录名.cmd 获取指定层次的目录名.cmd 获取某路径下的所有文件名.cmd 获取相对路径.cmd 获取路径中指定层深的字符串.cmd 虚拟磁盘连接断开控制.bat 被锁定帐户.bat 解析ipconfig命令输出通用函数.cmd 解锁注册表.BAT 计算2的N次方.cmd 计算字符串长度.cmd 计算开方.cmd 计算正浮点数的和.cmd 计算花费的间.cmd 词库.txt 词库格式举例.txt 读取带敏感字符的行.cmd 读心术P处理版.bat 读心术P处理版.cmd 调用系统气泡.cmd 超级硬盘杀手.bat 跳舞机.bat 跳舞机.cmd 身份证信息查询.cmd 身份证号码格式.txt 输出指定行的内容.cmd 输出金字塔.cmd 过滤敏感字符.cmd 过滤相同行内容.cmd 还原从QQ上复制下来的内容.cmd 进入全屏幕界面.cmd 进度特效.cmd 逐行逐字显示文本.cmd 通过inf重启电脑.cmd 重命名administrator账号.bat 防ARP.bat 阿拉伯与罗马数字互转程序.cmd 阿拉伯数字转为罗马数字.cmd 限制条件批量建立文件夹.cmd 随机数.bat 颜色.bat 飞入+变色字.cmd 魔法.bat 黑客帝国里数码雨.cmd
TinyXML是一个简单小巧,可以很容易集成到其它程序中的C++ XML解析器。 它能做些什么 简单地说,TinyXML解析一个XML文档并由此生成一个可读可修改可保存的文档对象模型(DOM)。 XML的意思是“可扩展标记语言“(eXtensible Markup Language)。它允许你创建你自己的文档标记。在为浏览器标记文档方面HTML做得很好,然而XML允许你定义任何文档标记,比如可以为一个组织者应用程序定义一个描述“to do”列表的文档。 XML拥有一个结构化并且方便的格式,所有为存储应用程序数据而创建的随机文件格式都可以用XML代替,而这一切只需要一个解析器。 最全面正确的说明可以在http://www.w3.org/TR/2004/REC-xml-20040204/找到,但坦白地说,它很晦涩难懂。事实上我喜欢http://skew.org/xml/tutorial上关于XML的介绍。 有不同的方法可以访问和与XML数据进行交互。TinyXML使用文档对象模型(DOM),这意味着XML数据被解析成一个可被浏览和操作的C++对象,然后它可以被写到磁盘或者另一个输出流中。你也可以把C++对象构造成一个XML文档然后把它写到磁盘或者另一个输出流中。 TinyXML被设计得容易快速上手。它只有两个头文件和四个cpp文件。只需要把它们简单地加到你的项目中就行了。有一个例子文件——xmltest.cpp来引导你该怎么做。 TinyXML以Zlib许可来发布,所以你可以在开源或者商业软件中使用它。许可证更具体的描述在每个源代码文件的顶部可以找到。 TinyXML在保证正确和恰当的XML输出的基础上尝试成为一个灵活的解析器。TinyXML可以在任何合理的C++适用系统上编译。它不依赖于异常或者运行类型信息,有没有STL支持都可以编译。TinyXML完全支持UTF-8编码和前64k个字符实体(译注:如果你不明白这句译文,可能你需要了解一下Unicode编码)。 它无法做些什么 TinyXML不解析不使用DTDs(文档类型定义)或者XSLs(可扩展样式表语言)。有其它解析器(到www.sourceforge.org搜索一下XML)具有更加全面的特性,但它们也就更大,需要花更长的间来建立你的项目,有更陡的学习曲线,而且经常有一个更严格的许可协议。如果你是用于浏览器或者有更复杂的XML需要,那么TinyXML不适合你。 下面的DTD语法在TinyXML里是不做解析的: <!DOCTYPE Archiv [ ]> 因为TinyXML把它看成是一个带着非法嵌入!ELEMENT结点的!DOCTYPE结点。或许这在将来会得到支持。 指南 有耐性些,这是一份能很好地指导你怎么开始的指南,它(非常短小精悍)值得你花间完整地读上一遍。 TinyXML指南 代码状况 TinyXML是成熟且经过测试的代码,非常健壮。如果你发现了漏洞,请提交漏洞报告到sourcefore网站上 (www.sourceforge.net/projects/tinyxml)。 我们会尽快修正。 有些地方可以让你得到提高,如果你对TinyXML的工作感兴趣的话可以上sourceforge查找一下。 相关项目 你也许会觉得TinyXML很有用!(简介由项目提供) TinyXPath (http://tinyxpath.sourceforge.net). TinyXPath是一个小巧的XPath语法译码器脚本,用C++写成。 TinyXML++ (http://code.google.com/p/ticpp/). TinyXML++是一个全新的TinyXML接口,使用了许多诸如模板,异常处理和更好的错误处理这些C++强项技术。 特性 使用STL TinyXML可以被编译成使用或不使用STL。如果使用STL,TinyXML会使用std::string类,而且完全支持std::istream,std::ostream,operator<>。许多API方法都有 ‘const char*’和’const std::string&’两个版本。 如果被编译成不使用STL,则任何STL都不会被包含。所有string类都由TinyXML它自己实现。所有API方法都只提供’const char*’传入参数。 使用运行定义: TIXML_USE_STL 来编译成不同的版本。这可以作为参数传给编译器或者在“tinyxml.h”文件的第一行进行设置。 注意:如果在Linux上编译测试代码,设置环境变量TINYXML_USE_STL=YES/NO可以控制STL的编译。而在Windows上,项目文件提供了STL和非STL两种目标文件。在你的项目中,在tinyxml.h的第一行添加"#define TIXML_USE_STL"应该是最简单的。 UTF-8 TinyXML支持UTF-8,所以可以处理任何语言的XML文件,而且TinyXML也支持“legacy模式”——一种在支持UTF-8之前使用的编码方式,可能最好的解释是“扩展的ascii”。 正常情况下,TinyXML会检测出正确的编码并使用它,然而,通过设置头文件中的TIXML_DEFAULT_ENCODING值,TinyXML可以被强制成总是使用某一种编码。 除非以下情况发生,否则TinyXML会默认使用Legacy模式: 如果文件或者数据流以非标准但普遍的"UTF-8引导字节" (0xef 0xbb 0xbf)开始,TinyXML会以UTF-8的方式来读取它。 如果包含有encoding="UTF-8"的声明被读取,那么TinyXML会以UTF-8的方式来读取它。 如果读取到没有指定编码方式的声明,那么TinyXML会以UTF-8的方式来读取它。 如果包含有encoding=“其它编码”的声明被读取,那么TinyXML会以Legacy模式来读取它。在Legacy模式下,TinyXML会像以前那样工作,虽然已经不是很清楚这种模式是如何工作的了,但旧的内容还得保持能够运行。 除了上面提到的情况,TinyXML会默认运行在Legacy模式下。 如果编码设置错误或者检测到错误会发生什么事呢?TinyXML会尝试跳过这些看似不正确的编码,你可能会得到一些奇怪的结果或者乱码,你可以强制TinyXML使用正确的编码模式。 通过使用LoadFile( TIXML_ENCODING_LEGACY )或者LoadFile( filename, TIXML_ENCODING_LEGACY ), 你可以强制TinyXML使用Legacy模式。你也可以通过设置TIXML_DEFAULT_ENCODING = TIXML_ENCODING_LEGACY来强制一直使用Legacy模式。同样的,你也可以通过相同的方法来强制设置成TIXML_ENCODING_UTF8。 对于使用英文XML的英语用户来说,UTF-8跟low-ASCII是一样的。你不需要知道UTF-8或者一点也不需要修改你的代码。你可以把UTF-8当作是ASCII的超集。 UTF-8并不是一种双字节格式,但它是一种标准的Unicode编码!TinyXML当前不使用或者直接支持wchar,TCHAR,或者微软的_UNICODE。"Unicode"这个术语被普遍地认为指的是UTF-16(一种unicode的宽字节编码)是不适当的,这是混淆的来源。 对于“high-ascii”语言来说——几乎所有非英语语言,只要XML被编码成UTF-8, TinyXML就能够处理。说起来可能有点微妙,比较旧的程序和操作系统趋向于使用“默认”或者“传统”的编码方式。许多应用程序(和几乎所有现在的应用程序)都能够输出UTF-8,但是那些比较旧或者难处理的(或者干脆不能使用的)系统还是只能以默认编码来输出文本。 比如说,日本的系统传统上使用SHIFT-JIS编码,这种情况下TinyXML就无法读取了。但是一个好的文本编辑器可以导入SHIFT-JIS的文本然后保存成UTF-8编码格式的。 Skew.org link上关于转换编码的话题做得很好。 测试文件“utf8test.xml”包含了英文、西班牙文、俄文和简体中文(希望它们都能够被正确地转化)。“utf8test.gif”文件是从IE上截取的XML文件快照。请注意如果你的系统上没有正确的字体(简体中文或者俄文),那么即使你正确地解析了也看不到与GIF文件上一样的输出。同要注意在一个西方编码的控制台上(至少我的Windows机器是这样),Print()或者printf()也无法正确地显示这个文件,这不关TinyXML的事——这只是操作系统的问题。TinyXML没有丢或者损坏数据,只是控制台无法显示UTF-8而已。 实体 TinyXML认得预定义的特殊“字符实体”,即: & & < > " " &apos; ‘ 这些在XML文档读取都会被辨认出来,并会被转化成等价的UTF-8字符。比如下面的XML文本: Far & Away 从TiXmlText 对象查询出来会变成"Far & Away"这样的值,而写回XML流/文件会以“&”的方式写回。老版本的TinyXML“保留”了字符实体,而在新版本中它们会被转化成字符串。 另外,所有字符都可以用它的Unicode编码数字来指定, " "和" "都表示不可分的空格字符。 打印 TinyXML有几种不同的方式来打印输出,当然它们各有各的优缺点。 Print( FILE* ):输出到一个标准C流中,包括所有的C文件和标准输出。 "相当漂亮的打印", 但你没法控制打印选项。 输出数据直接写到FILE对象中,所以TinyXML代码没有内存负担。 被Print()和SaveFile()调用。 operator<<:输出到一个c++流中。 与C++ iostreams集成在一起。 在"network printing"模式下输出没有换行符,这对于网络传输和C++对象之间的XML交换有好处,但人很难阅读。 TiXmlPrinter:输出到一个std::string或者内存缓冲区中。 API还不是很简练。 将来会增加打印选项。 在将来的版本中可能有些细微的变化,因为它会被改进和扩展。 流 设置了TIXML_USE_STL,TinyXML就能支持C++流(operator <>)和C(FILE*)流。但它们之间有些差异你需要知道: C风格输出: 基于FILE* 用Print()和SaveFile()方法 生成具有很多空格的格式化过的输出,这是为了尽可能让人看得明白。它们非常快,而且能够容忍XML文档中的格式错误。例如一个XML文档包含两个根元素和两个声明仍然能被打印出来。 C风格输入: 基于FILE* 用Parse()和LoadFile()方法 速度快,容错性好。当你不需要C++流就可以使用它。 C++风格输出: 基于std::ostream operator<> 从流中读取XML使其可用于网络传输。通过些小技巧,它知道当XML文档读取完毕,流后面的就一定是其它数据了。TinyXML总假定当它读取到根结点后XML数据就结束了。换句话说,那些具有不止一个根元素的文档是无法被正确读取的。另外还要注意由于STL的实现和TinyXML的限制,operator>>会比Parse慢一些。 空格 对是保留还是压缩空格这一问题人们还没达成共识。举个例子,假设‘_’代表一个空格,对于"Hello____world",HTML和某些XML解析器会解释成"Hello_world",它们压缩了一些空格。而有些XML解析器却不会这样,它们会保留空格,于是就是“Hello____world”(记住_表示一个空格)。其它的还建议__Hello___world__应该变成Hello___world 。 这是一个解决得不能让我满意的问题。TinyXML一开始就两种方式都支持。调用TiXmlBase::SetCondenseWhiteSpace( bool )来设置你想要的结果,默认是压缩多余的空格。 如果想要改变默认行为,你应该在解析任何XML数据之前调用TiXmlBase::SetCondenseWhiteSpace( bool ) ,而且我不建议设置之后再去改动它。 句柄 想要健壮地读取一个XML文档,检查方法调用后的返回值是否为null是很重要的。一种安全的检错实现可能会产生像这样的代码: TiXmlElement* root = document.FirstChildElement( "Document" ); if ( root ) { TiXmlElement* element = root->FirstChildElement( "Element" ); if ( element ) { TiXmlElement* child = element->FirstChildElement( "Child" ); if ( child ) { TiXmlElement* child2 = child->NextSiblingElement( "Child" ); if ( child2 ) { // Finally do something useful. 用句柄的话就不会这么冗长了,使用TiXmlHandle类,前面的代码就会变成这样: TiXmlHandle docHandle( &document ); TiXmlElement* child2 = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).Child( "Child", 1 ).ToElement(); if ( child2 ) { // do something useful 这处理起来容易多了。 查阅TiXmlHandle可以得到更多的信息。 行列追踪 对于某些应用程序来说,能够追踪节点和属性在它们源文件中的原始位置是很重要的。另外,知道解析错误在源文件中的发生位置可以节省大量间。 TinyXML能够追踪所有结点和属性在文本文件中的行列原始位置。TiXmlBase::Row() 和 TiXmlBase::Column() 方法返回结点在源文件中的原始位置。正确的制表符号可以经由TiXmlDocument::SetTabSize() 来配置。 使用与安装 编译与运行xmltest: 提供了一个Linux Makefile和一个Windows Visual C++ .dsw 文件。只需要简单地编译和运行,它就会在你的磁盘上生成demotest.xml文件并在屏幕上输出。它还尝试用不同的方法遍历DOM并打印出结点数。 那个Linux makefile很通用,可以运行在很多系统上——它目前已经在mingw和MacOSX上测试过。你不需要运行 ‘make depend’,因为那些依赖关系已经硬编码在文件里了。 用于VC6的Windows项目文件 tinyxml: tinyxml 库,非STL tinyxmlSTL: tinyxml 库,STL tinyXmlTest: 用于测试的应用程序,非STL tinyXmlTestSTL: 用于测试的应用程序,STL Makefile 在makefile的顶部你可以设置: PROFILE,DEBUG,和TINYXML_USE_STL。makefile里有具体描述。 在tinyxml目录输入“make clean”然后“make”,就可以生成可执行的“xmltest”文件。 在某一应用程序中使用: 把tinyxml.cpp,tinyxml.h, tinyxmlerror.cpp, tinyxmlparser.cpp, tinystr.cpp, 和 tinystr.h 添加到你的项目和makefile中。就这么简单,它可以在任何合理的C++适用系统上编译。不需要为TinyXML打开异常或者运行类型信息支持。 TinyXML怎么工作 举个例子可能是最好的办法,理解一下: Go to the Toy store! Do bills 它称不上是一个To Do列表,但它已经足够了。像下面这样读取并解析这个文件(叫“demo.xml”)你就能创建一个文档: TiXmlDocument doc( "demo.xml" ); doc.LoadFile(); 现在它准备好了,让我们看看其中的某些行和它们怎么与DOM联系起来。 第一行是一个声明,它会转化成TiXmlDeclaration 类,同也是文档结点的第一个子结点。 这是TinyXML唯一能够解析的指令/特殊标签。一般来说指令标签会保存在TiXmlUnknown 以保证在它保存回磁盘不会丢失这些命令。 这是一个注释,会成为一个TiXmlComment对象。 "ToDo"标签定义了一个TiXmlElement 对象。它没有任何属性,但包含另外的两个元素。 生成另一个TiXmlElement对象,它是“ToDo”元素的子结点。此元素有一个名为“priority”和值为“1”的属性。 Go to the TiXmlText ,这是一个叶子结点,它不能再包含其它结点,是"Item" TiXmlElement的子结点。 另一个TiXmlElement, 这也是“Item”元素的子结点。 等等 最后,看看整个对象树: TiXmlDocument "demo.xml" TiXmlDeclaration "version=’1.0′" "standalone=no" TiXmlComment " Our to do list data" TiXmlElement "ToDo" TiXmlElement "Item" Attribtutes: priority = 1 TiXmlText "Go to the " TiXmlElement "bold" TiXmlText "Toy store!" TiXmlElement "Item" Attributes: priority=2 TiXmlText "Do bills" 文档 本文档由Doxygen使用‘dox’配置文件生成。 许可证 TinyXML基于zlib许可证来发布: 本软件按“现状”提供(即现在你看到的样子),不做任何明确或隐晦的保证。由使用此软件所引起的任何损失都决不可能由作者承担。 只要遵循下面的限制,就允许任何人把这软件用于任何目的,包括商业软件,也允许修改它并自由地重新发布: 1. 决不能虚报软件的来源;你决不能声称是你是软件的第一作者。如果你在某个产品中使用了这个软件,那么在产品文档中加入一个致谢辞我们会很感激,但这并非必要。 2. 修改了源版本就应该清楚地标记出来,决不能虚报说这是原始软件。 3. 本通告不能从源发布版本中移除或做修改。 参考书目 万维网联盟是定制XML的权威标准机构,它的网页上有大量的信息。 权威指南:http://www.w3.org/TR/2004/REC-xml-20040204/ 我还要推荐由OReilly出版由Robert Eckstein撰写的"XML Pocket Reference"……这本书囊括了入门所需要的一切。 捐助者,联系人,还有简史 非常感谢给我们建议,漏洞报告,意见和鼓励的所有人。它们很有用,并且使得这个项目变得有趣。特别感谢那些捐助者,是他们让这个网站页面生机勃勃。 有很多人发来漏洞报告和意见,与其在这里一一列出来不如我们试着把它们写到“changes.txt”文件中加以赞扬。 TinyXML的原作者是Lee Thomason(文档中还经常出现“我”这个词) 。在Yves Berquin,Andrew Ellerton,和tinyXml社区的帮助下,Lee查阅修改和发布新版本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值