如何根据字符分割字符串

时间:2019-12-30 09:18:46

标签: c++

我可以从下面的行中获取一个子字符串

string filename = C:\Shaders\Test\Model\source\scene.fbx"
filename.substr( 0 , filename.find_last_of('\') );

这将是结果

C:\Shaders\Test\Model\source

现在,如果我想从最后一个“ \”到该字符串的末尾获取子字符串,

scene.fbx 

我正在尝试此行。

filename.substr(filename.find_last_of('/'), filename.size() )

但是我崩溃了。

2 个答案:

答案 0 :(得分:1)

我认为您在代码中反斜杠,因此没有有效的索引开头。尝试以下这一行: filename.substr(filename.find_last_of('\\'), filename.size() )

答案 1 :(得分:1)

#include <iostream>
using namespace std;
int main() {
    string s = "C:\\Shaders\\Test\\Model\\source\\scene.fbx";
    cout<<s<<endl<<s.substr(s.find_last_of('\\')+1, s.length())<<endl;
    // As @David suggested in comments, you can omit `s.length()`
    cout<<s.substr(s.find_last_of('\\')+1);
}

输出

C:\Shaders\Test\Model\source\scene.fbx
scene.fbx
scene.fbx