假设有一个CString变量存储文件的完整路径。现在我只能从if中找到文件名。如何在vc ++中完成。
CString FileName = "c:\Users\Acer\Desktop\FolderName\abc.dll";
现在我只想要 abc.dll 。
答案 0 :(得分:13)
您可以使用PathFindFileName
。
请记住,您必须转义路径字符串中的\
字符!
答案 1 :(得分:10)
与上面已经说过的相同,但是当你使用MFC框架时,这将是这样做的方法。虽然这不会检查文件的存在。
CString path= "c:\\Users\\Acer\\Desktop\\FolderName\\abc.dll";
CString fileName= path.Mid(path.ReverseFind('\\')+1);
答案 2 :(得分:7)
std::string str = "c:\\Users\\Acer\\Desktop\\FolderName\\abc.dll";
std::string res = str.substr( str.find_last_of("\\") + 1 );
会得到你的“abs.dll”。
答案 3 :(得分:2)
我会使用Boost::FileSystem进行文件名操作,因为它了解名称的各个部分。你想要的功能是filename()
如果您只是获取文件名,可以使用CString函数执行此操作。首先使用ReverseFind找到ast反斜杠,然后使用Right来获取所需的字符串。
答案 4 :(得分:0)
以下代码演示了从完整路径中提取文件名
#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;
}