使用 GetOpenFileName 仅从路径中获取文件名
Getting only the filename out of the path with GetOpenFileName
所以我有这个代码:
OPENFILENAME ofn;
char file_name[100];
ZeroMemory(&ofn, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = NULL;
ofn.lpstrFile = file_name;
ofn.lpstrFile[0] = '[=10=]';
ofn.nMaxFile = 100;
ofn.lpstrFilter = "Dynamic Link Libraries (.dll)[=10=]*.dll";
ofn.nFilterIndex = 1;
GetOpenFileName(&ofn);
cout << (const char*)ofn.lpstrFile << endl;
它只是定义了 windows 的属性,然后用 GetOpenFileName(&ofn)
打开一个文件,但是当我打印 lpstrFile
时,我得到了我选择的文件的完整路径。
现在我的问题是,在 C++ 上,如何使用文本替换函数或内置 windows 函数。
提前致谢。
使用 std::filesystem::path
class:
得到它
std::filesystem::path myFile = ofn.lpstrFile;
std::filesystem::path fullname = myFile.filename();
cout << fullname.c_str() << endl;
而且它也适用于@WhozCraig 指出的方法:
#pragma comment(lib, "shlwapi.lib")
#include <Shlwapi.h>
PathStripPath(ofn.lpstrFile);
所以我有这个代码:
OPENFILENAME ofn;
char file_name[100];
ZeroMemory(&ofn, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = NULL;
ofn.lpstrFile = file_name;
ofn.lpstrFile[0] = '[=10=]';
ofn.nMaxFile = 100;
ofn.lpstrFilter = "Dynamic Link Libraries (.dll)[=10=]*.dll";
ofn.nFilterIndex = 1;
GetOpenFileName(&ofn);
cout << (const char*)ofn.lpstrFile << endl;
它只是定义了 windows 的属性,然后用 GetOpenFileName(&ofn)
打开一个文件,但是当我打印 lpstrFile
时,我得到了我选择的文件的完整路径。
现在我的问题是,在 C++ 上,如何使用文本替换函数或内置 windows 函数。
提前致谢。
使用 std::filesystem::path
class:
std::filesystem::path myFile = ofn.lpstrFile;
std::filesystem::path fullname = myFile.filename();
cout << fullname.c_str() << endl;
而且它也适用于@WhozCraig 指出的方法:
#pragma comment(lib, "shlwapi.lib")
#include <Shlwapi.h>
PathStripPath(ofn.lpstrFile);