私はファイル名のリストをC++で文字列として持っています。私はこれをベクターに保存します。find_last_ofを使ってファイル名を検索する
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'を使うことはできませんか?または私は何かを逃している?
'ファイルを。 substr(files [i] .find_last_of( "。") - 1) 'は' '1.tif" 'です。 – LogicStuff
ああ、私は見る!私は分割として扱っていた。だから '-4'を使うと '1001.tif'が得られ、文字列から.tifを取り除くことができます。ありがとうございました! – anti
数字部分の長さは不明なので、数字を抽出するにはsscanfを使用する必要があります。 –