ファイルのフル パスを格納する CString 変数があるとします。今、if からファイル名だけを見つける必要があります。vc++ でそれを行う方法。
CString FileName = "c:\Users\Acer\Desktop\FolderName\abc.dll";
今、私はabc.dllだけが欲しいです。
ファイルのフル パスを格納する CString 変数があるとします。今、if からファイル名だけを見つける必要があります。vc++ でそれを行う方法。
CString FileName = "c:\Users\Acer\Desktop\FolderName\abc.dll";
今、私はabc.dllだけが欲しいです。
使用できますPathFindFileName
。
\
パス文字列内の文字をエスケープする必要があることに注意してください!
上記と同じですが、MFCフレームワークを使用しているため、これがその方法です。これはファイルの存在をチェックしませんが。
CString path= "c:\\Users\\Acer\\Desktop\\FolderName\\abc.dll";
CString fileName= path.Mid(path.ReverseFind('\\')+1);
std::string str = "c:\\Users\\Acer\\Desktop\\FolderName\\abc.dll";
std::string res = str.substr( str.find_last_of("\\") + 1 );
「abs.dll」を取得します。
名前の部分が何であるかを理解するので、ファイル名の操作にはBoost::FileSystemを使用します。ここで必要な関数はfilename()になります
ファイル名を取得するだけの場合は、CString関数を使用してこれを行うことができます。最初にReverseFindを使用してastバックスラッシュを見つけ、次にRightを使用して必要な文字列を取得します。
以下のコードは、フルパスからファイル名を抽出する方法を示しています
#include <iostream>
#include <cstdlib>
#include <string>
#include <algorithm>
std::string get_file_name_from_full_path(const std::string& file_path)
{
std::string file_name;
std::string::const_reverse_iterator it = std::find(file_path.rbegin(), file_path.rend(), '\\');
if (it != file_path.rend())
{
file_name.assign(file_path.rbegin(), it);
std::reverse(file_name.begin(), file_name.end());
return file_name;
}
else
return file_name;
}
int main()
{
std::string file_path = "c:\\Users\\Acer\\Desktop\\FolderName\\abc.dll";
std::cout << get_file_name_from_full_path(file_path) << std::endl;
return EXIT_SUCCESS;
}