1、提取文件名

  • 查找容器内子序列的最后一次出现的位置
    std::find_end(str.begin(), str.end(), pattern.begin(), pattern.end())

  • 查找容器内子序列的第一次出现的位置
    std::search()

  • find函数主要实现的是在容器内查找指定的元素,并且这个元素必须是基本数据类型的。查找成功返回一个指向指定元素的迭代器,查找失败返回end迭代器。

    std::find()

  • 返回两个迭代器之间的距离,也可以理解为计算两个元素 first 和 last 之间的元素数

    std::distance(str.begin(), result)

  • substr()截取字符串子序列,第一个参数为开始索引,第二参数是子序列长度

  • substring() 截取字符串子序列,第一个参数为开始索引,第二参数是结束索引

  • str.substr(0, std::distance(str.begin(), result) + 1)

#include <iostream>
#include <string>
# include  <algorithm> //注意要包含该头文件
using namespace std;
std::string ExtractFileName(std::string path)
{//不带后缀名的文件名std::string fileBaseName;//文件目录std::string str = path;//待匹配的子序列std::string pattern = "/";//查找容器内子序列的最后一次出现的位置,在[str.begin(),str.end ())内搜索由[pattern.begin(), pattern.end())//组成的子序列,然后将迭代器返回到其第一个元素,即pattern.begin(),若没有发现,返回-1// 与std::search()类似,后者返回子序列第一次出现的位置auto result = std::find_end(str.begin(), str.end(), pattern.begin(), pattern.end());if (result != str.end()){//substr()截取字符串子序列,第一个参数为开始索引,第二参数是子序列长度//substring(截取字符串子序列,第一个参数为开始索引,第二参数是结束索引//目录auto dirName = str.substr(0, std::distance(str.begin(), result) + 1);//带后缀名的文件名auto fileName = str.substr(std::distance(str.begin(), result) + 1);//不带后缀名的文件名fileBaseName = fileName.substr(0, fileName.size() - 4);}return fileBaseName;
}

2、提取XML文件

首先要引入tinyxml2的头文件,tinyxml2.h和tinyxml2.cpp

xml文件内容:

<?xml version="1.0" encoding="UTF-8"?> MD5123

声明XMLDocument变量,存放xml文件

tinyxml2::XMLDocument doc

读取xml文件

doc.LoadFile("demo.xml")

获取头节点

XMLElement *root = doc.RootElement();

头结点的兄弟节点

XMLElement *root1 = root->NextSiblingElement()

获取节点的id的属性

root1->Attribute("id");

获取节点的name的属性

head->Attribute("name")

获取节点的文本内容

root1->GetText();

获取头结点下的head节点

XMLElement *head = root->FirstChildElement("head")
#include <stdio.h>
#include <iostream>
#include <Windows.h>
#include <string>
#include "tinyxml2-master/tinyxml2.h"
using namespace std;
using namespace tinyxml2;void readXML()
{
//声明XMLDocument变量tinyxml2::XMLDocument doc;//读取xml文件doc.LoadFile("demo.xml");//判断是否读取成功if (doc.Error()){printf("Load XML failed!");return;}//获取头节点XMLElement *root = doc.RootElement();
//判断头结点有没有兄弟节点 if (root->NextSiblingElement() != NULL){//头结点的兄弟节点XMLElement *root1 = root->NextSiblingElement();//获取节点的id的属性printf("第二个一级节点%s\n", root1->Attribute("id"));}if (root->GetText() != NULL){string rootStr = root->GetText();printf("第一个一级节点的内容%s\n", rootStr);}XMLElement *head = root->FirstChildElement("head");//获取节点的内容printf("head的内容%s\n", head->GetText());printf("head的id%s\n", head->Attribute("id"));printf("head的name%s\n", head->Attribute("name"));system("pause");

总结

今天用C++实现了提取文件名与XML文件,感觉有用的同学点点关注。后续还将分享更多有用的知识。

C++提取文件名与提取XML文件相关推荐

  1. files函数提取文件名HTML,提取文件名时解析文件的问题os.listdir()为

    如果我从windows命令行使用filename = argv[n],下面的extract()函数似乎工作正常.如果我使用list(dir)中的文件名列表(使用os.listdir()内置函数从工作目 ...

  2. 提取Insight-MVT_Annotation_Train 数据集标签xml文件中的信息

    Insight-MVT_Annotation_Train  数据集标签xml文件中的信息 从xml文件中解析出所要的信息  type  height  width  top  left  写成Pasc ...

  3. bat文件打开一闪就没了_批量提取文件名

    前言 我们在采用可变数据制作证件卡时,需要有Excel表格中的可变数据(姓名.电话,照片等),我们可以通过批量提取照片的文件名来提取可变数据. 在之前的文章小编分享过用N8Print软件提取的方法,感 ...

  4. xml文件生成与下载

    写在前面: 最近要做一个新的功能,点击按钮,可以根据数据生成对应的xml文件并保存.下面记录一下在做的过程的一些疑惑与问题(我就是太笨了,一些很简单的知识都不知道,不过通过这次跟蛋蛋的交流,解决了我的 ...

  5. python读取xml标注坐标_遍历文件 创建XML对象 方法 python解析XML文件 提取坐标计存入文件...

    XML文件??? xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. 里面的标签都是可以随心所欲的按照他的命名规则来定义的,文件名为roi.xm ...

  6. 【XML文件数据预处理】获取xml文件中所有标签名称及数量||提取某个特定标签的数量||生成包含某个标签的图片索引txt并复制图片到指定文件夹

    目录 1.获取xml文件中所有标签名称及数量 2.提取某个特定标签的数量 3.生成包含某个标签的图片索引txt并复制图片到指定文件夹 1.获取xml文件中所有标签名称及数量 [需求]自己标注的数据集, ...

  7. 深度学习和目标检测系列教程 8-300:目标检测常见的标注工具LabelImg和将xml文件提取图像信息

    @Author:Runsen 图像标注主要用于创建数据集进行图片的标注.本篇博客将推荐一款非常实用的图片标注工具LabelImg,重点介绍其安装使用过程.如果想简单点,请直接下载打包版(下载地址见结尾 ...

  8. 目标检测xml文件提取

    提取xml文件的目标名,xmin,ymin,xmax,ymax,在图上把框框出来并保存. 使用try except避免xml文件中可能存在的标注错误. xml文件提取: 使用xml.dom.minid ...

  9. 提取文件名+复制+改名+批量创建文件程序(Excel VBA版)

    用Excel VBA做了个文件处理小工具,集合了文件名提取.文件复制.改名及批量创建文件.搜索复制文件的功能. (注:如果是规则改名,建议使用 拖把更名器,使用起来更直观,下载链接中附拖把更名器程序) ...

最新文章

  1. 面试官:小伙汁,你画的SpringMVC请求处理过程是从网上抄的吧?
  2. MYSQL [ERROR] InnoDB: Unable to lock ./ibdata1 error: 11
  3. Redis缓存雪崩、缓存穿透、热点Key解决方案和分析
  4. ubuntu samba服务器的安装文件,在Ubuntu16.04中搭建samba服务器并用win10连接实现共享文件...
  5. serversocket中的backlog是什么_输入网址按回车,到底发生了什么
  6. 95-230-022-源码-WordCount走读-获取JobGraph
  7. Windows 下 PHP 开发环境配置系列三 - eclipse PDT + Zend Debugger 调试web 项目
  8. HTTPS是对称加密还是非对称加密?
  9. 程序结构程序设计(四)
  10. 能写进简历的Java实战项目飞机大战
  11. ping得到ipv4与ipv6地址
  12. 网易邮箱异常信息说明
  13. Android系统启动之BOOT_COMPLETED广播
  14. 电脑电池,笔记本电池校正,教您怎样校正笔记本电脑电池
  15. 微信关注公众号获取用户信息
  16. 快速提取PDF文件中的表格
  17. 网页抓取软件Wget用法详解
  18. 关于DefaultHttpClient的作用已经被弃之后的新方法
  19. 新网站如何提升排名?网站排名提升的优化技巧分享
  20. Android 装置CTS与GMS认证差异

热门文章

  1. 计算机技术英语教学,计算机技术在英语教学中的应用
  2. 中国工程院院士陈纯:链上链下数据协同技术是联盟链发展的重要方向(全文)...
  3. Bloom Filter (布隆过滤器)
  4. 版本控制 | 设计师和美术人员的理想版本控制软件是?
  5. 【TencentOS-tiny】小熊派TencentOS-tiny测试,TencentOS-tiny调度
  6. CentOS、OpenWrt 批量网络唤醒持续至开机正常
  7. 安装AdventureWorks2008后没有AdventureWorks2008数据库的解决办法
  8. 解决程序提示“应用程序发生异常 未知的软件异常(0x0eedfade),位置为 0x7c812fd3”
  9. SMO(序列最小优化)算法论文及原理详述
  10. Literal控件的用法