web-dev-qa-db-de.com

So konvertieren Sie den Dateisystempfad in einen String

Ich durchlaufe alle Dateien in einem Ordner und möchte nur deren Namen in einer Zeichenfolge. Ich möchte eine Zeichenfolge aus einem std::filesystem::path. Wie mache ich das?

Mein Code:

#include <string>
#include <iostream>
#include <filesystem>
namespace fs = std::experimental::filesystem;

int main()
{
    std::string path = "C:/Users/user1/Desktop";
    for (auto & p : fs::directory_iterator(path))
        std::string fileName = p.path;
}

Ich erhalte jedoch den folgenden Fehler:

non-standard syntax; use '&' to create a pointer to a member.
11
anonymous noob

Verwenden Sie zum Konvertieren eines std::filesystem::path in einen nativ codierten String (dessen Typ std::filesystem::path::value_type Ist) das string() Methode. Beachten Sie die anderen *string() -Methoden, mit denen Sie Zeichenfolgen einer bestimmten Codierung abrufen können (z. B. u8string() für eine UTF-8-Zeichenfolge).

Beispiel:

#include <filesystem>
#include <string>

namespace fs = std::filesystem;

int main()
{
    fs::path path = fs::u8path(u8"愛.txt");
    std::string path_string = path.u8string();
}
20
tambre