144 votes

Comment convertir le type de chemin de boost en chaîne de caractères ?

Bonjour J'ai actuellement un programme qui récupère le chemin complet de l'emplacement d'un fichier et le met dans une variable de type : boost::filesystem2::path.

J'ai cherché comment faire et j'ai trouvé qu'en utilisant :

string result1 = boost::filesystem::basename (myPath)

convertira le chemin en chaîne de caractères MAIS il ne convertit que le nom du fichier (par exemple, si le chemin est " C:\name\bobsAwesomeWordDoc.docx "il renvoie simplement "bobsAwesomeWordDoc").

J'ai trouvé ce qui suit sur la façon de convertir le chemin entier en chaîne, mais je ne sais pas comment l'implémenter dans mon programme. J'ai essayé de multiples façons mais j'obtiens des erreurs de conversion.

const std::string& string( ) : Cette routine retourne une copie de la chaîne avec laquelle le chemin a été initialisé, avec un formatage selon les règles de la grammaire du chemin.

(trouvé aquí )

J'ai essayé :

string result1 = string& (myPath);

et quelques autres variantes.

195voto

icecrime Points 23650

Il vous suffit d'appeler myPath.string() .

18voto

Chris Seddon Points 513

Je crois que vous devez faire un peu plus que simplement appeler la méthode string() :

boost::filesystem::canonical(myPath).string() ;

pour obtenir le nom de fichier absolu complet. P.S. Je programme avec Boost depuis des années et je n'ai pas trouvé facilement cette information dans la documentation.

3voto

Paddy Points 21

Merci, cela a fonctionné dans wxWidgets : (Je sais que je devrais juste utiliser les utilitaires wx, mais c'est un test pour moi. mais c'est un test)

void WxWidgetsBoostTestFrame::OnTestBtnClick(wxCommandEvent& event)
{
    boost::filesystem::path currentPath;
    currentPath = boost::filesystem::current_path();
    std::string curDirString;
    curDirString = boost::filesystem::canonical(currentPath).string();
    wxString mystring(curDirString.c_str(), wxConvUTF8);
    wxMessageBox(mystring); // output:  C:/Users\client\Desktop...      
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X