我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C++提取文件名与提取XML文件的方法详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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文件。

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!                

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C++提取文件名与提取XML文件的方法详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Linux shell 提取文件名和目录名的方法

${}[root@node01 ~]# file=/dir1/dir2/dir3/my.file.txt [root@node01 ~]# echo ${file#*/} dir1/dir2/dir3/my.file.txt删掉第一个 /
2022-06-04

shell 提取文件名和目录名的方法实现

目录一、使用变量操作符 ${}1、${var##*/}2、${var#*.} 3、${var%/*}4、${var%%.*}二、basename和dirname1、basename2、dirname在写shell脚本中,经常会有需要对路径和
2023-02-16

Mybatis sql与xml文件读取方法详细分析

这篇文章主要介绍了Mybatis sql与xml文件读取方法,在执行一个自定义sql语句时,dao对应的代理对象时如何找到sql,也就是dao的代理对象和sql之间的关联关系是如何建立的
2023-01-28

shell提取文件名和目录名的方法实现

本文主要介绍了shell提取文件名和目录名的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-02-16

C#读取文件的方法

本篇内容介绍了“C#读取文件的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C#读取文件高效方法问题的提出:你平时是怎么读取文件的?使用
2023-06-18

node.js生成与读取csv文件方法详解

这篇文章主要介绍了node.js生成与读取csv文件方法详解,需要的朋友可以参考下
2022-11-13

java读取xml文件的方法有哪些

Java读取XML文件的方法有以下几种:1. 使用DOM解析器:DOM解析器将整个XML文档加载到内存中,形成一个树形的DOM对象,可以通过操作DOM对象来访问和修改XML文件的内容。2. 使用SAX解析器:SAX解析器是一种事件驱动的解析
2023-09-27

Python读取.py文件的方法详解

python读取.py文件的方法有三种:通过open()函数、pathlib模块以及importlib模块导入模块。这些方法允许读取.py文件的内容并将其用于各种目的,如执行模块或使用其功能。Python读取.py文件的方法详解在Pyth
Python读取.py文件的方法详解
2024-04-03

Linux shell 之 提取文件名和目录名的一些方法总结

很多时候在使用Linux的shell时,我们都需要对文件名或目录名进行处理,通常的操作是由路径中提取出文件名,从路径中提取出目录名,提取文件后缀名等等。例如,从路径/dir1/dir2/file.txt中提取也文件名file.txt,提取出
2022-06-04

C语言实现读取CSV文件的方法详解

这篇文章主要为大家详细介绍了C语言如何实现读取CSV文件,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下
2022-12-21

Linux Shell获取文件夹下的文件名方法

有时候需要获取某个文件夹下的所有文件名,可以用程序实现,但是打开IDE,编译klwYDx运行太麻烦,在linux服务器中通常不能打开IDE,此时可以用几行简单的shell命令来实现,结果保存到某个文
2022-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录