我有一个函数,应该在字符串中查找目录的最后一位。例如:
“ 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);