我在这里搜索了很多,并尝试了几个例子,但仍然不能解决我的小问题。我需要从路径中提取文件名"test.exe"。有人有可行的主意吗?其他选项是通过另一个函数获得文件名?
提前感谢!
WCHAR fileName[255];
GetModuleFileName(NULL, fileName, 255); // fileName = TestFoldertest.exe
看PathFindFileName()
:
#include <windows.h>
#include <shlwapi.h>
#pragma comment(lib, "Shlwapi.lib")
WCHAR fullPath[MAX_PATH];
GetModuleFileName(NULL, fullPath, MAX_PATH);
LPWSTR fileName = PathFindFileName(fullPath);
使用WinApi
#include <iostream>
#include <string>
#include <windows.h>
std::string GetExecutableName()
{
std::string path = std::string(MAX_PATH, 0);
if( !GetModuleFileNameA(nullptr, &path[0], MAX_PATH ) )
{
throw std::runtime_error(u8"Error at get executable name.");
}
size_t pos=path.find_last_of('/');
if(pos == std::string::npos)
{
pos = path.find_last_of('\');
}
return path.substr(pos+1);
}
int main()
{
std::cout<< GetExecutableName() << std::endl;
return 0;
}
使用主参数
First - arg[0]包含可执行文件的完整文件名。
#include <iostream>
#include <string>
std::string GetExecutableName(const std::string& exe)
{
size_t pos=exe.find_last_of('/');
if(pos == std::string::npos)
{
pos =exe.find_last_of('\');
}
return exe.substr(pos+1);
}
int main(int argc,char ** args) {
std::cout << GetExecutableName(args[0])<< std::endl;
}