C++查找字符串中某个字符第N次出现的位置
该程序可用于进行目录截断,查找父目录等操作
#include <iostream>
#include <unistd.h>
using namespace std;
int main()
{
string cur_path;
//注意,这里的getcwd获取的是你执行可执行文件时所在的路径,不是可执行文件的路径!
cur_path = getcwd(NULL, 0);
cout << "cur_path is: " << cur_path << endl;
int pre_pos = 0;
//N是你要到截取几个‘/’
int N = 3;
for (int i = 0; i < N; i++)
{
pre_pos = cur_path.find('/', i == 0 ? 0 : pre_pos + 1);
if (pre_pos == -1)
{
cout << "该字符似乎没有出现这么多次" << endl;
break;
}
}
//此时pre_pos的值就是他第N次出现的位置
string father_path;
// substr的第2个参数是指截取的长度,截取到他出现第n次的地方之后
father_path = cur_path.substr(0, pre_pos + 1);
cout << "father_path: " << father_path << endl;
}
在/home/free/test
路径下执行此程序,程序输出如下
cur_path is: /home/free/test
father_path: /home/free/