我有一个从__FILE__宏获取的文件路径,我想从中提取2个片段。

格式为:/some/path/to/a/file/AAA/xxx/BBB.cc。我想要AAABBB路径。 xxx通常是src,inc,tst等,文件扩展名通常是.cc,但不能保证。

我知道我可以使用string.find()或什至将字符串拆分为/字符的数组,但鉴于需要的搜索次数,它们似乎都不高效。我考虑过sscanf并认为这可能是最好的方法,但是,我无法定义格式,以致它不会跳过开头的大部分内容,而是得到我需要的内容。如何使用sscanf进行操作,还是有更好的方法?

谢谢您的帮助。

最佳答案

使用rfind,以便您可以从头开始并向后工作:

string s = "/some/path/to/a/file/AAA/xxx/BBB.cc";

unsigned int a = s.rfind('.');
unsigned int b = s.rfind('/');
string BBB = s.substr(b+1,a-b-1);

a = s.rfind('/',b-1);
b = s.rfind('/',a-1);
string AAA = s.substr(b+1,a-b-1);

关于c++ - 获取文件路径的一部分,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7361327/

10-10 19:25