@ 思路
@-@ 简要
根据尖括号将文件分隔成字符串,建立一套判断字符串是否为标签的标准,若不为标签则为文本内容,存入结果文件中;
 
@-@ 详述
0. 建立两个哈希表:
哈希表1 unordered_set<string> - 存放“普通标签名字符串”:html, head, body, table, td, br等;
哈希表2 unordered_map<string, bool> - 存放“影响到文本读写的标签”:script, style等(<script></script>中的内容不读取);
1. 提取标签
读取文件流,从文件首部开始,若遇到“<”,就判断其后的内容是否为标签(因为“<”可能为小于号):提取“<”后的第一个字符串作为标签名,以空格符号或">"截止;
2. 判定标签
在哈希表1中查找提取到的标签,找到则判定为普通标签名,将指针移到">"之后;
对提取到的标签名,判断其是否在哈希表2中,若在则设置文本的可读状态(如<script>后的文本不读取,</script>后的文本开始读取);
若根据哈希表1判定不为普通标签,且在文本读取标志皆为true时,将不是标签的字符串都存入字符串缓冲区,写入文本文件;
 
@ code
 

最新文章

  1. xcode 常见错误报错问题!
  2. salt安装与简单使用---基于centos6.5
  3. java 获取当前时间及年月日时分秒
  4. 2013 US Open Award Ceremoney
  5. C#接口的经典案例
  6. Spring中的一个错误:使用Resources时报错(The annotation @Resources is disallowed for this location)
  7. Android Studio 打开弹出警告框
  8. 使用scp命令,不同服务器之间拷备文件
  9. JAVAscript学习笔记 js条件语句 第三节 (原创) 参考js使用表 (2017-09-14 15:55)
  10. Ring3句柄表的枚举
  11. hashtable的运用实例
  12. 谁说深入浅出虚拟机难?现在我让他通俗易懂(JVM)
  13. ERC20数字货币ProxyOverflow存在漏洞
  14. 关于递推算法求解约瑟夫环问题P(n,m,k,s)
  15. ffplay源码分析6-音频重采样
  16. VB.NET工作记录
  17. Delphi2010怎样获取程序内部自身版本?
  18. Andriod下载源码导入后AndroidManifest.xml小红叉的解决办法
  19. .net根据经纬度获取地址(百度api)
  20. iOS 中架构模式的浅显理解

热门文章

  1. python图片拼接
  2. 中阶d03.1 JDBCDemo
  3. 37.1 net-- udp传输
  4. Python Requests-学习笔记(4)-定制请求头和POST
  5. MODIS系列之NDVI(MOD13Q1)四:MRT单次及批次处理数据
  6. leetcode c++做题思路和题解(4)——队列的例题和总结
  7. tf.nn.max_pool 池化
  8. Linux下搭建接口自动化测试平台
  9. SVG 案例:动态去创建分支节点,当鼠标经过某个节点时,分支线会高亮
  10. windows批处理protoc生成C++代码