0

此函数返回一个字符串数组,其中包含文件夹中的文件列表。它看起来像这样:

"folder//xyz.txt"

我怎样才能让它看起来像这样?

folder//xyz.txt

它相同但没有""

vector<string> list_of_files(string folder_name)                           
{
    vector<string> files;
    string path = folder_name;

    for (const auto& entry : fs::directory_iterator(path))      
    { 
        stringstream ss;
        ss << entry.path();        //convert entry.path() to string
        string str = ss.str();                  
                    
        files.push_back(ss.str());
    }  

    return files;
}
4

1 回答 1

3

擦除字符串的第一个和最后一个字符很容易:

if (str.size() >= 1)
   str.erase(0, 1);   // from 1st char (#0), len 1; bit verbose as not designed for this

if (str.size() >= 1)
   str.pop_back();    // chop off the end

您的引号来自插入流的路径(quoted用于帮助防止由于行下空格引起的错误)。

幸运的是,您不需要任何这些:正如评论中所探讨的,字符串流是完全没有必要的;如果您要求,路径已经转换为字符串:

vector<string> list_of_files(string folder_name)
{
    vector<string> files;

    for (const auto& entry : fs::directory_iterator(folder_name))
        files.push_back(entry.path().string());

    return files;
}
于 2020-10-26T21:01:45.720 回答