C++提取文件名與提取XML文件的方法詳解_第1頁
C++提取文件名與提取XML文件的方法詳解_第2頁
C++提取文件名與提取XML文件的方法詳解_第3頁
C++提取文件名與提取XML文件的方法詳解_第4頁
C++提取文件名與提取XML文件的方法詳解_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

第C++提取文件名與提取XML文件的方法詳解目錄1、提取文件名2、提取XML文件總結(jié)

1、提取文件名

查找容器內(nèi)子序列的最后一次出現(xiàn)的位置

std::find_end(str.begin(),str.end(),pattern.begin(),pattern.end())

查找容器內(nèi)子序列的第一次出現(xiàn)的位置

std::search()

find函數(shù)主要實現(xiàn)的是在容器內(nèi)查找指定的元素,并且這個元素必須是基本數(shù)據(jù)類型的。查找成功返回一個指向指定元素的迭代器,查找失敗返回end迭代器。

std::find()

返回兩個迭代器之間的距離,也可以理解為計算兩個元素first和last之間的元素數(shù)

std::distance(str.begin(),result)

substr()截取字符串子序列,第一個參數(shù)為開始索引,第二參數(shù)是子序列長度substring()截取字符串子序列,第一個參數(shù)為開始索引,第二參數(shù)是結(jié)束索引str.substr(0,std::distance(str.begin(),result)+1)

#includeiostream

#includestring

#includealgorithm//注意要包含該頭文件

usingnamespacestd;

std::stringExtractFileName(std::stringpath)

//不帶后綴名的文件名

std::stringfileBaseName;

//文件目錄

std::stringstr=path;

//待匹配的子序列

std::stringpattern="/";

//查找容器內(nèi)子序列的最后一次出現(xiàn)的位置,在[str.begin(),str.end())內(nèi)搜索由[pattern.begin(),pattern.end())

//組成的子序列,然后將迭代器返回到其第一個元素,即pattern.begin(),若沒有發(fā)現(xiàn),返回-1

//與std::search()類似,后者返回子序列第一次出現(xiàn)的位置

autoresult=std::find_end(str.begin(),str.end(),pattern.begin(),pattern.end());

if(result!=str.end())

//substr()截取字符串子序列,第一個參數(shù)為開始索引,第二參數(shù)是子序列長度

//substring(截取字符串子序列,第一個參數(shù)為開始索引,第二參數(shù)是結(jié)束索引

//目錄

autodirName=str.substr(0,std::distance(str.begin(),result)+1);

//帶后綴名的文件名

autofileName=str.substr(std::distance(str.begin(),result)+1);

//不帶后綴名的文件名

fileBaseName=fileName.substr(0,fileName.size()-4);

returnfileBaseName;

2、提取XML文件

首先要引入tinyxml2的頭文件,tinyxml2.h和tinyxml2.cpp

xml文件內(nèi)容:

xmlversion=1.0encoding=UTF-8MD5123

聲明XMLDocument變量,存放xml文件

tinyxml2::XMLDocumentdoc

讀取xml文件

doc.LoadFile("demo.xml")

獲取頭節(jié)點

XMLElement*root=doc.RootElement();

頭結(jié)點的兄弟節(jié)點

XMLElement*root1=root-NextSiblingElement()

獲取節(jié)點的id的屬性

root1-Attribute("id");

獲取節(jié)點的name的屬性

head-Attribute("name")

獲取節(jié)點的文本內(nèi)容

root1-GetText();

獲取頭結(jié)點下的head節(jié)點

XMLElement*head=root-FirstChildElement("head")

#includestdio.h

#includeiostream

#includeWindows.h

#includestring

#include"tinyxml2-master/tinyxml2.h"

usingnamespacestd;

usingnamespacetinyxml2;

voidreadXML()

//聲明XMLDocument變量

tinyxml2::XMLDocumentdoc;

//讀取xml文件

doc.LoadFile("demo.xml");

//判斷是否讀取成功

if(doc.Error())

printf("LoadXMLfailed!");

return;

//獲取頭節(jié)點

XMLElement*root=doc.RootElement();

//判斷頭結(jié)點有沒有兄弟節(jié)點

if(root-NextSiblingElement()!=NULL)

//頭結(jié)點的兄弟節(jié)點

XMLElement*root1=root-NextSiblingElement();

//獲取節(jié)點的id的屬性

printf("第二個一級節(jié)點%s\n",root1-Attribute("id"));

if(root-GetText()!=NULL)

stringrootStr=root-GetText();

printf("第一個一級節(jié)點的內(nèi)容%s\n",rootStr);

XMLElement*head=root-FirstChildElement("head");

//獲取節(jié)點的內(nèi)容

printf("head的內(nèi)容%s\n",head-GetText());

printf("head的id%s\n",head-Attribute("id"));

p

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論