在符合 POSIX 的系统 (*nix) 上,有一个常用的函数用于此dirname(3)
. 在窗户上有_splitpath
.
_splitpath 函数将路径分成四个部分。
void _splitpath(
const char *path,
char *drive,
char *dir,
char *fname,
char *ext
);
所以结果(这就是我认为你正在寻找的)将在dir
.
这是一个例子:
int main()
{
char *path = "c:\\that\\rainy\\day";
char dir[256];
char drive[8];
errno_t rc;
rc = _splitpath_s(
path, /* the path */
drive, /* drive */
8, /* drive buffer size */
dir, /* dir buffer */
256, /* dir buffer size */
NULL, /* filename */
0, /* filename size */
NULL, /* extension */
0 /* extension size */
);
if (rc != 0) {
cerr << GetLastError();
exit (EXIT_FAILURE);
}
cout << drive << dir << endl;
return EXIT_SUCCESS;
}