C++提取文件名与提取XML文件
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文件相关推荐
- files函数提取文件名HTML,提取文件名时解析文件的问题os.listdir()为
如果我从windows命令行使用filename = argv[n],下面的extract()函数似乎工作正常.如果我使用list(dir)中的文件名列表(使用os.listdir()内置函数从工作目 ...
- 提取Insight-MVT_Annotation_Train 数据集标签xml文件中的信息
Insight-MVT_Annotation_Train 数据集标签xml文件中的信息 从xml文件中解析出所要的信息 type height width top left 写成Pasc ...
- bat文件打开一闪就没了_批量提取文件名
前言 我们在采用可变数据制作证件卡时,需要有Excel表格中的可变数据(姓名.电话,照片等),我们可以通过批量提取照片的文件名来提取可变数据. 在之前的文章小编分享过用N8Print软件提取的方法,感 ...
- xml文件生成与下载
写在前面: 最近要做一个新的功能,点击按钮,可以根据数据生成对应的xml文件并保存.下面记录一下在做的过程的一些疑惑与问题(我就是太笨了,一些很简单的知识都不知道,不过通过这次跟蛋蛋的交流,解决了我的 ...
- python读取xml标注坐标_遍历文件 创建XML对象 方法 python解析XML文件 提取坐标计存入文件...
XML文件??? xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. 里面的标签都是可以随心所欲的按照他的命名规则来定义的,文件名为roi.xm ...
- 【XML文件数据预处理】获取xml文件中所有标签名称及数量||提取某个特定标签的数量||生成包含某个标签的图片索引txt并复制图片到指定文件夹
目录 1.获取xml文件中所有标签名称及数量 2.提取某个特定标签的数量 3.生成包含某个标签的图片索引txt并复制图片到指定文件夹 1.获取xml文件中所有标签名称及数量 [需求]自己标注的数据集, ...
- 深度学习和目标检测系列教程 8-300:目标检测常见的标注工具LabelImg和将xml文件提取图像信息
@Author:Runsen 图像标注主要用于创建数据集进行图片的标注.本篇博客将推荐一款非常实用的图片标注工具LabelImg,重点介绍其安装使用过程.如果想简单点,请直接下载打包版(下载地址见结尾 ...
- 目标检测xml文件提取
提取xml文件的目标名,xmin,ymin,xmax,ymax,在图上把框框出来并保存. 使用try except避免xml文件中可能存在的标注错误. xml文件提取: 使用xml.dom.minid ...
- 提取文件名+复制+改名+批量创建文件程序(Excel VBA版)
用Excel VBA做了个文件处理小工具,集合了文件名提取.文件复制.改名及批量创建文件.搜索复制文件的功能. (注:如果是规则改名,建议使用 拖把更名器,使用起来更直观,下载链接中附拖把更名器程序) ...
最新文章
- 面试官:小伙汁,你画的SpringMVC请求处理过程是从网上抄的吧?
- MYSQL [ERROR] InnoDB: Unable to lock ./ibdata1 error: 11
- Redis缓存雪崩、缓存穿透、热点Key解决方案和分析
- ubuntu samba服务器的安装文件,在Ubuntu16.04中搭建samba服务器并用win10连接实现共享文件...
- serversocket中的backlog是什么_输入网址按回车,到底发生了什么
- 95-230-022-源码-WordCount走读-获取JobGraph
- Windows 下 PHP 开发环境配置系列三 - eclipse PDT + Zend Debugger 调试web 项目
- HTTPS是对称加密还是非对称加密?
- 程序结构程序设计(四)
- 能写进简历的Java实战项目飞机大战
- ping得到ipv4与ipv6地址
- 网易邮箱异常信息说明
- Android系统启动之BOOT_COMPLETED广播
- 电脑电池,笔记本电池校正,教您怎样校正笔记本电脑电池
- 微信关注公众号获取用户信息
- 快速提取PDF文件中的表格
- 网页抓取软件Wget用法详解
- 关于DefaultHttpClient的作用已经被弃之后的新方法
- 新网站如何提升排名?网站排名提升的优化技巧分享
- Android 装置CTS与GMS认证差异
热门文章
- 计算机技术英语教学,计算机技术在英语教学中的应用
- 中国工程院院士陈纯:链上链下数据协同技术是联盟链发展的重要方向(全文)...
- Bloom Filter (布隆过滤器)
- 版本控制 | 设计师和美术人员的理想版本控制软件是?
- 【TencentOS-tiny】小熊派TencentOS-tiny测试,TencentOS-tiny调度
- CentOS、OpenWrt 批量网络唤醒持续至开机正常
- 安装AdventureWorks2008后没有AdventureWorks2008数据库的解决办法
- 解决程序提示“应用程序发生异常 未知的软件异常(0x0eedfade),位置为 0x7c812fd3”
- SMO(序列最小优化)算法论文及原理详述
- Literal控件的用法