0

ファイル パスを受け取り、このファイルの拡張子を返す POSIX または Linux API 関数が必要です。すべてのプラットフォームに 1 つあるはずですが、Linux にはできません。それは何と呼ばれていますか?

4

4 に答える 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 に答える