你可能還在使用atoi、atof、itoa等函數進行類型轉換,趕緊看過來,用一個函數,解決所有支持io流類型的轉換。
//基礎類型轉換
template<typename OUT,typename IN, typename std::enable_if<!std::is_same<OUT, IN>::value, int>::type N = 0>
OUT Convert(const IN& val)
{
std::stringstream ss;
ss << val;//向流中傳值
OUT result;//這裏存儲轉換結果
ss >> result;//向result中寫入值
return result;
}
//輸入、輸出類型一致
template<typename OUT,typename IN, typename std::enable_if<std::is_same<OUT, IN>::value, int>::type N = 0>
OUT Convert(const IN& val)
{
std::cout << "same" << std::endl;
return val;
}
測試代碼:
int main()
{
std::cout << Convert<int>("123") << std::endl;
std::cout << Convert<int>(567) << std::endl;
std::string str = "789.45";
std::cout << Convert<double>(str) << std::endl;
std::cout << Convert<std::string>(46.89) << std::endl;
return 0;
}