我正在为学校作业编写 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 返回的那个位置
原文由 The_Questioner 发布,翻译遵循 CC BY-SA 4.0 许可协议
这个问题的所有其他答案都会找到“/”(Unix)或“\”(Windows),并手动切分字符串;这是冗长的并且受用户错误的影响。 C++17 现在有
std::filesystem
包,它以操作系统友好的方式从路径中干净地提取目录和文件名: