在模板函数中将字符转换为Int

时间:2012-03-19 02:34:34

标签: c++ templates casting

我有一个C ++模板函数可以打印数字。

它适用于所有内容,除非我使用char类型的数据。

我希望char打印为int,但如果我在模板函数中明确地转换它,那么我将失去float类型的精度。

我希望能够说:

template<class T> bob(T a){
  cout<<if_char_make_int(a)<<endl;
}

但我不知道该怎么做,或者是否有可能。

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

template<class T> void bob(T a){
  cout<< a <<endl;
}

template<> void bob(char a){
  cout<< static_cast<int>(a) <<endl;
}

有关详情,请参阅此处http://www.cplusplus.com/doc/tutorial/templates/(模板专业化)

希望有所帮助

答案 1 :(得分:2)

template<class T> void bob(T a){
    std::cout
      << typename boost::mpl::if_<boost::is_same<char, T>, int, T>::type(a)
      << std::endl;
}