我在c ++中有一个文件名列表,作为字符串。我将它们存储在矢量中。
vector<string> files;
使用.find_last_of
,我获得了扩展程序。
for (int j = 0; j < files.size(); j++)
{
if (files[j].substr(files[j].find_last_of(".") + 1) == "tif") {
images.push_back(files[j]);
}
一切正常。现在,我需要检查文件名的最后一部分,在extension.eg之前,在文件中:
FileName.1001.tif
我希望得到'1001'
我试过了:
if (files[i].substr(files[i].find_last_of(".") - 1) == "1001")
{
std::cout << "yaaay..." << std::endl;
}
但它永远不会受到打击。我可以不在这里使用' - 1'吗?或者我错过了什么?
答案 0 :(得分:1)
您可以尝试这样:
if(files[i].substr (str.find("."),str.find_last_of(".")-str.find("."))== "1001")
答案 1 :(得分:1)
坚持使用您当前的方法,您只需要删除扩展名,然后应用相同的“查找最后一个”。逻辑:
std::string getLastPart(const std::string &filename)
{
// Strip of the extension
auto name = filename.substr(0, filename.find_last_of('.'));
// Now get everything to the right of the last .
auto part = name.substr(name.find_last_of('.') + 1);
return part;
}
注意:如果.
不存在,您需要添加一些错误处理...
现在你可以说:
if(getLastPart(files[i]) == "1001")
{
std::cout << "yaaay..." << std::endl;
}