8

ファイルのフル パスを格納する CString 変数があるとします。今、if からファイル名だけを見つける必要があります。vc++ でそれを行う方法。

CString FileName = "c:\Users\Acer\Desktop\FolderName\abc.dll";

今、私はabc.dllだけが欲しいです。

4

5 に答える 5

15

使用できますPathFindFileName

\パス文字列内の文字をエスケープする必要があることに注意してください!

于 2012-07-17T11:26:31.897 に答える
13

上記と同じですが、MFCフレームワークを使用しているため、これがその方法です。これはファイルの存在をチェックしませんが。

CString path= "c:\\Users\\Acer\\Desktop\\FolderName\\abc.dll";
CString fileName= path.Mid(path.ReverseFind('\\')+1);
于 2012-07-17T11:43:43.847 に答える
7
std::string str = "c:\\Users\\Acer\\Desktop\\FolderName\\abc.dll";
std::string res = str.substr( str.find_last_of("\\") + 1 );

「abs.dll」を取得します。

于 2012-07-17T11:31:31.450 に答える
2

名前の部分が何であるかを理解するので、ファイル名の操作にはBoost::FileSystemを使用します。ここで必要な関数はfilename()になります

ファイル名を取得するだけの場合は、CString関数を使用してこれを行うことができます。最初にReverseFindを使用してastバックスラッシュを見つけ、次にRightを使用して必要な文字列を取得します。

于 2012-07-17T11:32:48.053 に答える
0

以下のコードは、フルパスからファイル名を抽出する方法を示しています

#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;
}
于 2012-07-17T11:37:25.043 に答える