boost (erste gehversuche) Pfad/Datei/Extension splitten
-
Hiho
Habe heute meine ersten gehversuche in boost gestartet und gleich zwei fragen
Gibt es eine gute library fuer alles wie man es von der MSDN kennt, ich hab schon das passende gefunden, aber da Intellisense meist den dienst verweigert bei boost, ist eine gute library noch notwendiger, allein members rausfinden war schon ne huerde #gg
Ich habe mal ein vergleich angestellt wie es zwischen MFC CString und std::string boost laufen wuerde
MFC
CString strOrg = _T("C:\\Temp\\File.txt"); int iBackSlash = strOrg.ReverseFind(_T('\\')) + 1; int iDot = strOrg.ReverseFind(_T('.')); int iLength = strOrg.GetLength(); CString strPath = strOrg.Left(iBackSlash); // C:\Temp\ CString strFile = strOrg.Mid(iBackSlash, iLength - iDot); // File CString strExtension = strOrg.Right(iLength - iDot); // .txtboost
boost::filesystem::tpath TheFile(_T("C:\\Temp\\File.txt")); std::tstring strFile = boost::filesystem::basename(TheFile); // File std::tstring strExtension = boost::filesystem::extension(TheFile); // .txt TheFile.remove_leaf(); std::tstring strPath = TheFile.file_string(); // C:\Temp\ich habe zum ermitteln des strPath an dieser stelle file_string verwendet, da ich gesehen habe das es ueberhaupt keine rolle spielt was ich benutze, ich muss den dateinamen mit remove_leaf vorher rauswerfen
gibt es eine moeglichkeit das ich den pfad direkt bekomm ohne ihn vorher mit remove_leaf manipulieren zu muessen?
-
hier is erstma die doku: http://boost.org/libs/filesystem/doc/index.htm
vielleicht is hier was dabei: http://boost.org/libs/filesystem/doc/tr2_proposal.html#basic_path-observersvielleicht path::root_path oder path::branch_path ? aber das müsste denk ich gehen.
-
ueber diese doku hatte ich es schon rausgefunden, find die persoenlich aber recht unuebersichtlich, vermutlich durch fehlende formatierung
root_path geht nicht das returniert nur das erste root path und nicht die gesammte struktur,
mit branch patch gehts aber, hatte damit schon gute ergebnisse gehabt, hatte mich nur gestoert das man da ein umweg gehen muss um ein std::string zu erhalten und noch das \\ anhaengen muss
daher dachte ich gibt es evtl ein direkteren wegboost::filesystem::tpath TheFile(_T("C:\\Temp\\File.txt")); std::tstring strFile = boost::filesystem::basename(TheFile); std::tstring strExtension = boost::filesystem::extension(TheFile); std::tstring strPath = TheFile.branch_path().file_string() + _T("\\");