8
votes

Trouver un nom de fichier uniquement à partir du chemin complet du fichier en VC ++

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";


2 commentaires

Vous devez échapper à vos backslashes


Je recommande la fonction décomposePath décrite ici .


5 Réponses :


15
votes

Vous pouvez utiliser < Code> pathfindfilename .

N'oubliez pas que vous devez échapper au caractère \ dans votre chaîne de chemin!


1 commentaires

@Mark, pourquoi convertir? Si c'est Char * - ANSI Construire, passez Char *!



7
votes
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".

1 commentaires

Pourquoi utiliser STD :: String lorsque vous avez CSSTLING qui a les fonctions requises




0
votes

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


0 commentaires