namespace settings{
typedef wchar_t char_t;
typedef std::basic_string<char_t> string_t;
}
namespace util{
namespace string{
std::basic_string<wchar_t> toWide(const std::basic_string<char>& s);
std::basic_string<char> fromWide(const std::basic_string<wchar_t>& w);
}
}
これは私が持っているものです。またはのchar_t場合があります。ここで、入力文字列をインテリジェントに変換する 2 つの関数が必要ですwchar_tcharsettings::string_t
settings::string_t from(const std::basic_string<char>& s);
settings::string_t from(const std::basic_string<wchar_t>& s);
string_t が wstring として typedef されているが string を返すため、使用boost::is_sameは機能しませんreturn s
settings::string_t util::string::from(const std::basic_string< char >& s){
if(boost::is_same< std::basic_string<char> , settings::string_t >::value){
return s;
}else{
return toWide(s);
}
}
InputTypeテンプレートとオーバーロードを使用してとが同じかどうかを識別するのstring_tは簡単ですが、同じでない場合は 4 つのバリエーションがあります。
型 operator をオーバーロードせずにこのシナリオをモデル化する方法は?
概要
と文字列のsettings::string_t from(const std::basic_string<T>& s);両方を に変換する を設計するにはどうすればよいですか。ここで、T はまたはにもなり得ます。質問でわかるように、柔軟性があります。両方または文字列にすることもできますcharwcharstring_tcharwchar_tstring_tcharwchar_t