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

目录
  • 1、提取文件名
  • 2、提取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文件。

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

(0)

相关推荐

  • 利用python提取wav文件的mfcc方法

    如下所示: import scipy.io.wavfile as wav from python_speech_features import mfcc fs, audio = wav.read("abc.wav") feature_mfcc = mfcc(audio, samplerate=fs) print(feature_mfcc) print(feature_mfcc.shape) 注:python_speech_features 不存在, 通过 pip install pyt

  • C++提取文件中信息的方法

    对于文件比较复杂的时候,为了获取文件中的信息,需要一些比较特殊的函数,比如,getline().replace().atoi,atof等 例子一,读取以下文件中的数据,并保存进一个类里面. 首先,类的定义如下,感觉是struct,但是按照struct的处理,我这段代码出错了,不知道什么问题,暂时po出来吧,有空看看. struct ImageLabel{ std::string imagePath;//save图片路径名 int faceBox[4];//输入点集的最外层包络矩形rect四个参数

  • Python实现PDF文字识别提取并写入CSV文件

    目录 1.前言 2.需求描述 3.开始动手动脑 3.1安装相关第三方包 3.2导入需要用到的第三方库 3.3读取pdf文件,并识别内容 3.4对识别的数据进行处理,写入csv文件 总结 1. 前言 扫描件一直受大众青睐,任何纸质资料在扫描之后进行存档,想使用时手机就能打开,省心省力.但是扫描件的优点也恰恰造成了它的一个缺点,因为是通过电子设备扫描,所以出来的是图像,如果想要处理文件上的内容,直接操作是无法实现的. 那要是想要引用其中的内容怎么办呢?别担心,Python帮你解决问题. 2. 需求描

  • Python从csv文件中读取数据及提取数据的方法

    目录 1.从csv文件中读取数据 2.数据切割 数据保存在csv文件中 1.从csv文件中读取数据 参数header=None的有无 (1)没有header=None--直接将csv表中的第一行当作表头 # 读取数据 import pandas as pd data = pd.read_csv("data1.csv") print(data) 打印结果为: (2)有header=None--自动添加第一行当作表头 # 读取数据 import pandas as pd data = pd

  • pytorch实现用Resnet提取特征并保存为txt文件的方法

    接触pytorch一天,发现pytorch上手的确比TensorFlow更快.可以更方便地实现用预训练的网络提特征. 以下是提取一张jpg图像的特征的程序: # -*- coding: utf-8 -*- import os.path import torch import torch.nn as nn from torchvision import models, transforms from torch.autograd import Variable import numpy as np

  • Android编程解析XML文件的方法详解【基于XmlPullParser】

    本文实例讲述了Android编程解析XML文件的方法.分享给大家供大家参考,具体如下: 前言 在学习Android的Framework层源码时,Android大量的使用XmlPullParser来解析xml文件的源码.因此,这里也顺道介绍一下XmlPullParser的使用. XML XML(eXtensible Markup Language)中文名为可扩展标记语言.标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等. 用途 XML设计用了传送及携带数据信息,

  • android编程之XML文件解析方法详解(附源码)

    本文实例讲述了android编程之XML文件解析方法.分享给大家供大家参考,具体如下: 在android开发中,经常用到去解析xml文件,常见的解析xml的方式有一下三种:SAX.Pull.Dom解析方式.最近做了一个android版的CSDN阅读器,用到了其中的两种(sax,pull),今天对android解析xml的这三种方式进行一次总结. 今天解析的xml示例(channels.xml)如下: <?xml version="1.0" encoding="utf-8

  • JS实现加载和读取XML文件的方法详解

    本文实例讲述了JS实现加载和读取XML文件的方法.分享给大家供大家参考,具体如下: 有时在开发时用到 JS 加载和读取XML文件的情况,写下提供参考,这里主要是分两步完成: 1. JS加载XML文件 步骤一般为(1),建立 XML DOM 对象:(2),设置加载方式,异步(推荐)或同步: (3)提供XML文件URL然后调用 load 方法:大致如下: var xmlFileName="xxFile.xml"; var xmlDoc=''; if (window.ActiveXObjec

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

    目录 1.提取文件名 2.提取XML文件 总结 1.提取文件名 查找容器内子序列的最后一次出现的位置 std::find_end(str.begin(), str.end(), pattern.begin(), pattern.end()) 查找容器内子序列的第一次出现的位置 std::search() find函数主要实现的是在容器内查找指定的元素,并且这个元素必须是基本数据类型的.查找成功返回一个指向指定元素的迭代器,查找失败返回end迭代器. std::find() 返回两个迭代器之间的距

  • jQ处理xml文件和xml字符串的方法(详解)

    1.xml文件 <?xml version="1.0" encoding="utf-8" ?> <root> <book id="1"> <name>锋利的jQuery1</name> <author>XXX1</author> <price>250</price> </book> <book id="2&quo

  • C++ OpenCV读写XML或YAML文件的方法详解

    目录 前言 1.如何使用 1.1第一步:XML.YAML文件的打开 1.2 第二步:进行文件读写操作 1.3 第三步:vector(array)和map的输入和输出 1.4 第四步:文件关闭 2.代码展示 2.1 写文件 2.2 读文件 2.3 完整的示例代码 前言 本节我们将认识XML和YAML这两种文件类型. 所谓XML,即eXtensible Markup Language,翻译成中文为“可扩展标识语言”.首先,XML是一种元标记语言.所谓元标记,就是开发者可以根据自身需要定义自己的标记,

  • Python自动操作Excel文件的方法详解

    目录 工具 读取Excel文件内容 写入Excel文件内容 Excel文件样式调整 设置表头的位置 设置单元格的宽高 总结 工具 python3.7 Pycharm Excel xlwt&xlrd 读取Excel文件内容 当前文件夹下有一个名为“股票数据.xlsx”的Excel文件,可以按照下列代码方式来操作它. import xlrd # 使用xlrd模块的open_workbook函数打开指定Excel文件并获得Book对象(工作簿) wb = xlrd.open_workbook('股票数

  • 对pandas写入读取h5文件的方法详解

    1.引言 通过参考相关博客对hdf5格式简要介绍. hdf5在存储的是支持压缩,使用的方式是blosc,这个是速度最快的也是pandas默认支持的. 使用压缩可以提磁盘利用率,节省空间. 开启压缩也没有什么劣势,只会慢一点点. 压缩在小数据量的时候优势不明显,数据量大了才有优势. 同时发现hdf读取文件的时候只能是一次写,写的时候可以append,可以put,但是写完成了之后关闭文件,就不能再写了, 会覆盖. 另外,为什么单独说pandas,主要因为本人目前对于h5py这个包的理解不是很深入,不

  • Python Pandas读写txt和csv文件的方法详解

    目录 一.文本文件 1. read_csv() 2. to_csv() 一.文本文件 文本文件,主要包括csv和txt两种等,相应接口为read_csv()和to_csv(),分别用于读写数据 1. read_csv() 格式代码: pandas.read_csv(filepath_or_buffer, sep=', ', delimiter=None, header='infer', names=None, index_col=None, usecols=None, squeeze=False

  • AJAX实现JSON与XML数据交换方法详解

    目录 1.JS中如何创建和访问JSON对象 2.基于JSON的数据交换 3.基于XML的数据交换 1.JS中如何创建和访问JSON对象 (1)在javascript语言中怎么创建一个json对象,语法是什么? "属性名" : 属性值,"属性名" : 属性值.........的格式! 注意:属性值的数据类型随意:可能是数字,可能是布尔类型,可能是字符串,可能是数组,也可能是一个json对象..... <!DOCTYPE html> <html lan

随机推荐