PathRelativePathTo()関数は、ベースとなるパスと、相対パスを取得したいパスを 指定すると、相対パスを返します。PathRelativePathTo()関数を利用するには、 "Shlwapi.lib"をリンクする必要があります。
#include <stdio.h> #include <tchar.h> #include <iostream> #include <string> #include <windows.h> #include <shlwapi.h> #pragma comment( lib, "Shlwapi.lib" ) /* 相対パスへ変換する */ std::wstring GetRelativePath ( std::wstring oFolder , std::wstring oPath ) { wchar_t waBuf[ MAX_PATH * 2 ]; // 相対パスを取得する if ( FALSE != ::PathRelativePathTo( waBuf , oFolder.c_str() // ベースとなるフォルダ , FILE_ATTRIBUTE_DIRECTORY , oPath.c_str() // 相対パスを取得したパス , FILE_ATTRIBUTE_ARCHIVE ) ) { // 変換結果を返す return( waBuf ); } // 変換失敗 return( L"" ); } int _tmain ( int argc , _TCHAR* argv[] ) { // 相対パスへ変換する std::wstring oRelativePath = GetRelativePath( L"c:¥¥OrgApps¥¥Fav¥¥WabisabiSampleSource" , L"c:¥¥OrgApps¥¥Fav¥¥WabisabiSampleSource¥¥Tools¥¥test" ); // 結果を表示 std::wcout << oRelativePath << std::endl; }
.\Tools\test