網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
1、提取文件名
- 查找容器內(nèi)子序列的最后一次出現(xiàn)的位置
std::find_end(str.begin(), str.end(), pattern.begin(), pattern.end())
- 查找容器內(nèi)子序列的第一次出現(xiàn)的位置
std::search()
- find函數(shù)主要實(shí)現(xiàn)的是在容器內(nèi)查找指定的元素,并且這個(gè)元素必須是基本數(shù)據(jù)類(lèi)型的。查找成功返回一個(gè)指向指定元素的迭代器,查找失敗返回end迭代器。
std::find()
- 返回兩個(gè)迭代器之間的距離,也可以理解為計(jì)算兩個(gè)元素 first 和 last 之間的元素?cái)?shù)
std::distance(str.begin(), result)
- substr()截取字符串子序列,第一個(gè)參數(shù)為開(kāi)始索引,第二參數(shù)是子序列長(zhǎng)度
- substring() 截取字符串子序列,第一個(gè)參數(shù)為開(kāi)始索引,第二參數(shù)是結(jié)束索引
str.substr(0, std::distance(str.begin(), result) + 1)
#include#include # include //注意要包含該頭文件 using namespace std; std::string ExtractFileName(std::string path) { //不帶后綴名的文件名 std::string fileBaseName; //文件目錄 std::string str = path; //待匹配的子序列 std::string pattern = "/"; //查找容器內(nèi)子序列的最后一次出現(xiàn)的位置,在[str.begin(),str.end ())內(nèi)搜索由[pattern.begin(), pattern.end()) //組成的子序列,然后將迭代器返回到其第一個(gè)元素,即pattern.begin(),若沒(méi)有發(fā)現(xiàn),返回-1 // 與std::search()類(lèi)似,后者返回子序列第一次出現(xiàn)的位置 auto result = std::find_end(str.begin(), str.end(), pattern.begin(), pattern.end()); if (result != str.end()) { //substr()截取字符串子序列,第一個(gè)參數(shù)為開(kāi)始索引,第二參數(shù)是子序列長(zhǎng)度 //substring(截取字符串子序列,第一個(gè)參數(shù)為開(kāi)始索引,第二參數(shù)是結(jié)束索引 //目錄 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文件內(nèi)容:
MD5123
聲明XMLDocument變量,存放xml文件
tinyxml2::XMLDocument doc
讀取xml文件
doc.LoadFile("demo.xml")
獲取頭節(jié)點(diǎn)
XMLElement *root = doc.RootElement();
頭結(jié)點(diǎn)的兄弟節(jié)點(diǎn)
XMLElement *root1 = root->NextSiblingElement()
獲取節(jié)點(diǎn)的id的屬性
root1->Attribute("id");
獲取節(jié)點(diǎn)的name的屬性
head->Attribute("name")
獲取節(jié)點(diǎn)的文本內(nèi)容
root1->GetText();
獲取頭結(jié)點(diǎn)下的head節(jié)點(diǎn)
XMLElement *head = root->FirstChildElement("head")
#include#include #include #include #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; } //獲取頭節(jié)點(diǎn) XMLElement *root = doc.RootElement(); //判斷頭結(jié)點(diǎn)有沒(méi)有兄弟節(jié)點(diǎn) if (root->NextSiblingElement() != NULL) { //頭結(jié)點(diǎn)的兄弟節(jié)點(diǎn) XMLElement *root1 = root->NextSiblingElement(); //獲取節(jié)點(diǎn)的id的屬性 printf("第二個(gè)一級(jí)節(jié)點(diǎn)%s\n", root1->Attribute("id")); } if (root->GetText() != NULL) { string rootStr = root->GetText(); printf("第一個(gè)一級(jí)節(jié)點(diǎn)的內(nèi)容%s\n", rootStr); } XMLElement *head = root->FirstChildElement("head"); //獲取節(jié)點(diǎn)的內(nèi)容 printf("head的內(nèi)容%s\n", head->GetText()); printf("head的id%s\n", head->Attribute("id")); printf("head的name%s\n", head->Attribute("name")); system("pause");
總結(jié)
今天用C++實(shí)現(xiàn)了提取文件名與XML文件。
原文鏈接:https://blog.csdn.net/weixin_44095417/article/details/123296235
相關(guān)推薦
- 2022-11-09 發(fā)布?Android?library?到?Maven?解析_Android
- 2022-08-17 Win2008系統(tǒng)搭建DHCP服務(wù)器_win服務(wù)器
- 2022-09-26 Python實(shí)現(xiàn)自動(dòng)化域名批量解析分享_python
- 2022-10-17 android中px、sp與dp之間進(jìn)行轉(zhuǎn)換詳解_Android
- 2022-11-21 Qt實(shí)現(xiàn)小功能之復(fù)雜抽屜效果詳解_C 語(yǔ)言
- 2022-12-01 可定制React自動(dòng)完成搜索組件Turnstone實(shí)現(xiàn)示例_React
- 2024-03-16 nginx 報(bào) unknown directive “server“ 詭異問(wèn)題處理
- 2022-11-06 Golang常用包使用介紹_Golang
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支