網(wǎng)站首頁 編程語言 正文
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ù)類型的。查找成功返回一個(gè)指向指定元素的迭代器,查找失敗返回end迭代器。
std::find()
- 返回兩個(gè)迭代器之間的距離,也可以理解為計(jì)算兩個(gè)元素 first 和 last 之間的元素?cái)?shù)
std::distance(str.begin(), result)
- substr()截取字符串子序列,第一個(gè)參數(shù)為開始索引,第二參數(shù)是子序列長度
- substring() 截取字符串子序列,第一個(gè)參數(shù)為開始索引,第二參數(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(),若沒有發(fā)現(xiàn),返回-1 // 與std::search()類似,后者返回子序列第一次出現(xiàn)的位置 auto result = std::find_end(str.begin(), str.end(), pattern.begin(), pattern.end()); if (result != str.end()) { //substr()截取字符串子序列,第一個(gè)參數(shù)為開始索引,第二參數(shù)是子序列長度 //substring(截取字符串子序列,第一個(gè)參數(shù)為開始索引,第二參數(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)有沒有兄弟節(jié)點(diǎn) if (root->NextSiblingElement() != NULL) { //頭結(jié)點(diǎn)的兄弟節(jié)點(diǎn) XMLElement *root1 = root->NextSiblingElement(); //獲取節(jié)點(diǎn)的id的屬性 printf("第二個(gè)一級節(jié)點(diǎn)%s\n", root1->Attribute("id")); } if (root->GetText() != NULL) { string rootStr = root->GetText(); printf("第一個(gè)一級節(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-08-30 ST-Link設(shè)備連接。 Could not verify ST device! Abort con
- 2022-12-26 python3中的函數(shù)與參數(shù)及空值問題_python
- 2022-08-07 gRPC超時(shí)攔截器實(shí)現(xiàn)示例_Golang
- 2022-10-23 python如何在一個(gè)py文件中獲取另一個(gè)py文件中的值(一個(gè)或多個(gè))_python
- 2023-01-15 tensorflow使用tf.data.Dataset?處理大型數(shù)據(jù)集問題_python
- 2023-04-26 C語言形參與實(shí)參使用的差別講解_C 語言
- 2022-07-03 k8s之client-go的工作邏輯
- 2022-04-07 代碼詳解Python的函數(shù)基礎(chǔ)(1)_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- 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)證過濾器
- Spring Security概述快速入門
- 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)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支