如何获取完整路径的文件夹和文件?

时间:2015-01-03 08:25:53

标签: c++ c++11

我有一个像/a/b/c/text.txt

这样的完整路径

如何使用c ++获取/ a / b / c和text.txt?更喜欢使用一些标准库函数。

我打算用

substring和find_last_of

3 个答案:

答案 0 :(得分:1)

使用find_last_of - http://www.cplusplus.com/reference/string/string/find_last_of/

与substr一起应该为你猜想一个解决方案

答案 1 :(得分:0)

您可以尝试以下操作:

std::string path = "/a/b/c/text.txt";
size_t lastSlash = path.rfind("/");
if (lastSlash != std::string::npos){
    std::string filename = path.substr(lastSlash + 1);
    std::string folder = path.substr(0, lastSlash);
}

请注意,这仅适用于正斜杠。

答案 2 :(得分:-2)

基于复制(stackoverflow.com/a/3071694/2082964),我认为以下解决了这个问题,

请注意,取决于您是否需要尾随/不;对于我的问题,我需要,所以我修改了一下。

 // string::find_last_of
    #include <iostream>
    #include <string>
    using namespace std;

    void SplitFilename (const string& str)
    {
      size_t found;
      cout << "Splitting: " << str << endl;
      found=str.find_last_of("/\\");
      cout << " folder: " << str.substr(0,found+1) << endl;
      cout << " file: " << str.substr(found+1) << endl;
    }

    int main ()
    {
      string str1 ("/usr/bin/man");
      string str2 ("c:\\windows\\winhelp.exe");

      SplitFilename (str1);
      SplitFilename (str2);

      return 0;
    }