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_t
char
settings::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 はまたはにもなり得ます。質問でわかるように、柔軟性があります。両方または文字列にすることもできますchar
wchar
string_t
char
wchar_t
string_t
char
wchar_t