当编译器编译代码时,它会吐出一个可执行文件。 我想要做的是在运行时获取该可执行文件的名称。唯一的问题是我搜索的每一个地方,我只能抓住可执行文件的整个路径。
如果我有一个名为app.exe
的可执行文件,我想在控制台中输出它。
在线人士说使用GetModuleFileName
,GetModuleBaseName
和argv[0]
,但所有这些都为我提供了。C:\Users\Lone-PC\Desktop\app.exe
的完整路径,而不仅仅是{{} 1}}单独。
我不想使用任何库,这些都包含在Windows机器的控制台应用程序中。
答案 0 :(得分:0)
感谢用户HTNW,我找到了我想要的东西。
我必须从argv[0]
。
所以我查了一下并借了代码并创建了一个函数,它将以字符串形式返回文件名。
以下是解决我的问题的代码
string getFileName(string path) {
string filename = path;
const size_t last_slash_idx = filename.find_last_of("\\/");
if (std::string::npos != last_slash_idx) {
filename.erase(0, last_slash_idx + 1);
}
const size_t period_idx = filename.rfind('.');
return filename;
}