C++获取目录前缀

问题描述:

比如我有串"root/data/home/file1.txt"我想获得"root/data/home"有没有C++中的方便的功能,可以让我做到这一点,或者我应该代码它自己?C++获取目录前缀

你可以做基本的字符串操作,即

std::string path = "root/data/home/file1.txt"; 
// no error checking here 
std::string prefix = path.substr(0, path.find_last_of('/')); 

或采取类似Boost.Filesystem第三种选择:

+1

+1提升提升,可与不同的平台一起使用 – 2011-06-12 01:57:50

如果你是一个POSIX系统上,尝试dirname(3)

语言本身肯定没有方便的功能。字符串库提供find_last_of,这应该很好。

这是相当依赖于平台的。例如,Windows使用'\'作为路径分隔符(主要是),Unix使用'/',而MacOS(OSX之前)使用':'

特定于Windows的API是PathRemoveFileSpec