web-dev-qa-db-fra.com

comment convertir le chemin du système de fichiers en chaîne

J'itère à travers tous les fichiers d'un dossier et je veux juste leurs noms dans une chaîne. Je veux obtenir une chaîne d'un std::filesystem::path. Comment je fais ça?

Mon 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;
}

Cependant, j'obtiens l'erreur suivante:

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

Pour convertir un std::filesystem::path en une chaîne encodée en natif (dont le type est std::filesystem::path::value_type), Utilisez string() méthode. Notez les autres méthodes *string(), qui vous permettent d'obtenir des chaînes d'un encodage spécifique (par exemple u8string() pour une chaîne UTF-8).

Exemple:

#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