【发布时间】:2016-06-02 11:44:37
【问题描述】:
我正在为学校作业编写 C++ 程序。在某些时候,这个问题需要我更改目录,我知道该怎么做。但是,用户将向程序提供文件的绝对路径。我想要做的是将目录更改为该文件所在的位置。例如,如果我在目录 dir2 中,并且用户想要转到该文件
/home/dir1/dir2/dir3/dir4/file
我想做
int ret = chdir("home/dir1/dir2/dir3/dir4");
我的问题是如何将用户给定的字符串拆分成
/home/dir1/dir2/dir3/dir4/
和
file
编辑我想通了。我首先将绝对路径名从 const char* 转换为字符串。然后我使用 .find_last_of("/") 字符串成员来查找字符串中最后一个“/”的位置。然后我使用 .substr() 成员获取从 0 到 .find_last_of 返回的位置的子字符串
【问题讨论】:
-
把你的橡皮鸭——en.wikipedia.org/wiki/Rubber_duck_debugging——放在你的键盘旁边,用简单的英语向你的橡皮鸭解释你的逻辑,一步一步的算法。一旦你的橡皮鸭同意你的算法可以工作,只需接受你的解释,并将其翻译成代码。
-
我不太确定以这种方式拆分字符串的选项。我知道我可以使用字符串流根据空格拆分它。但这是一个不同的分隔符。我想根据最后一个'/'来拆分它
-
std::string 类具有拆分和切分字符串的方法,以任何您喜欢的方式。如果您想在位置 #n 之前或之后提取部分字符串,std::string 提供了几种方法来执行此操作。
标签: c++ split absolute-path chdir