2011-06-12 132 views
8

比如我有串"root/data/home/file1.txt"我想獲得"root/data/home"有沒有C++中的方便的功能,可以讓我做到這一點,或者我應該代碼它自己?C++獲取目錄前綴

回答

15

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

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

2

如果你是一個POSIX系統上,嘗試dirname(3)

2

語言本身肯定沒有方便的功能。字符串庫提供find_last_of,這應該很好。

0

這是相當依賴於平臺的。例如,Windows使用'\'作爲路徑分隔符(主要是),Unix使用'/',而MacOS(OSX之前)使用':'

特定於Windows的API是PathRemoveFileSpec