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.
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();
}