我有一个函数,应该在字符串中查找目录的最后一位。例如:
“ C:\ Lolcats \ pie \ ambulance \”应返回“ ambulance”。但是,它会返回一些我从未见过的奇怪字符,例如男性箭头符号和一些其他怪异的东西。

string App::getlastName(string cakes){
    //finds the name of the last folder in a directory
    string name;
    string temp;//popback all of temp into name to invert it
    cakes.pop_back();
    char i = cakes[cakes.length()-1];
    while (i != '\\'){
        temp.push_back(cakes[i]);
        cakes.pop_back();
        i = cakes[cakes.length()-1];
    }                           //-1?
    for (int j = 0; j<temp.length(); ++j){
        name.push_back(temp.back());
        temp.pop_back();
    }
    return name;
}


这可能是我写过的最糟糕的功能之一,但我想不出其他方法如何解决问题:(有人可以帮我吗?:D

请注意,该函数无需查找文件名,而只是文件夹。

最佳答案

如果从字符串中删除尾随\,则可以使用rfind和substr的简单组合来获取所需的数据。

string substring = cakes.substr(cakes.rfind("\\") + 1);

07-24 18:29