ファイル パスを受け取り、このファイルの拡張子を返す POSIX または Linux API 関数が必要です。すべてのプラットフォームに 1 つあるはずですが、Linux にはできません。それは何と呼ばれていますか?
2584 次
4 に答える
0
この問題を解決するための最良の方法 (API 関数がない場合、それ自体が奇妙です) は、Vittorio と R. の回答をbasename
、パスを取得してファイル名を返す関数と組み合わせることです。ファイル: http://linux.die.net/man/3/basename
また、結果の文字列を UTF-16 に変換し、mbstowcs
すべての検索をstd::wstring
次のように行います。
std::wstring fileExtFromPath (const char * path)
{
const char * fileName = basename(filePath);
wchar_t buffer [MAX_PATH] = {0}; // Use mblen if you don't like MAX_PATH
const std::wstring fileNameW (buffer);
const size_t pointPosition = fileNameW.rfind(L".");
const std::wstring fileExtW = pointPosition == 0 ? std::wstring() : fileNameW.substr( + 1);
return fileExtW;
}
于 2013-08-28T09:42:45.863 に答える