Visual Studio 2008 C ++ 03アプリケーションがあり、渡された文字列の種類に応じて、単一の関数でさまざまなパラメーターを使用して文字列操作を実行したいと考えています。
たとえば、次のようなファイル名のパス部分を(単純に)見つけたい場合は、次のようにします。
template< typename Elem, typename Traits, typename Alloc >
std::basic_string< Elem, Traits, Alloc > GetFilePath(
const std::basic_string< Elem, Traits, Alloc >& filename )
{
std::basic_string< Elem, Traits, Alloc >::size_type slash =
filename.find_last_of( "\\/" ) + 1;
return filename.substr( 0, slash );
}
wchar_tベースの文字列の場合はL"\\/"
、charベースの文字列を使用します"\\/"
。
そして、呼び出し規約は次のようになります。
std::wstring pathW = GetFilePath( L"/Foo/Bar/Baz.txt" );
std::string pathA = GetFilePath( "/Foo/Bar/Baz.txt" );
この目標のために上記の関数を変更する方法を誰かが提案できますか?(はい、GetFilePath
名前をオーバーロードする2つの関数を使用できることに気付きました。可能であれば、それを避けたいと思います。)