Supposons qu'il existe une variable CSTLING qui stocke le chemin complet du fichier.now i HAVA Pour trouver uniquement le nom de fichier de si.Comment le faire dans VC ++.
CString FileName = "c:\Users\Acer\Desktop\FolderName\abc.dll";
5 Réponses :
Vous pouvez utiliser < Code> pathfindfilename code> . P>
N'oubliez pas que vous devez échapper au caractère \ code> dans votre chaîne de chemin! p>
@Mark, pourquoi convertir? Si c'est Char * - ANSI Construire, passez Char *!
std::string str = "c:\\Users\\Acer\\Desktop\\FolderName\\abc.dll";
std::string res = str.substr( str.find_last_of("\\") + 1 );
Will get you "abs.dll".
Pourquoi utiliser STD :: String lorsque vous avez CSSTLING qui a les fonctions requises
Le code ci-dessous illustre l'extraction d'un nom de fichier à partir d'un chemin complet
#include <iostream>
#include <cstdlib>
#include <string>
#include <algorithm>
std::string get_file_name_from_full_path(const std::string& file_path)
{
std::string file_name;
std::string::const_reverse_iterator it = std::find(file_path.rbegin(), file_path.rend(), '\\');
if (it != file_path.rend())
{
file_name.assign(file_path.rbegin(), it);
std::reverse(file_name.begin(), file_name.end());
return file_name;
}
else
return file_name;
}
int main()
{
std::string file_path = "c:\\Users\\Acer\\Desktop\\FolderName\\abc.dll";
std::cout << get_file_name_from_full_path(file_path) << std::endl;
return EXIT_SUCCESS;
}
Même chose que déjà énoncé ci-dessus, mais comme vous utilisez le cadre MFC, ce serait le moyen de le faire. Bien que cela ne vérifie pas l'existence des fichiers.
CString path= "c:\\Users\\Acer\\Desktop\\FolderName\\abc.dll";
CString fileName= path.Mid(path.ReverseFind('\\')+1);
BTW CSSTRING n'est pas seulement pour MFC - voir
Vous devez échapper à vos backslashes
Je recommande la fonction décomposePath décrite ici .