C++中不存在内建的byte类型,通常我们会通过
typedef unsigned char byte;
这一类的方式来定义byte类型,但就此认为unsigned char可以完全代表byte类型,就得注意了。
byte a = 0x30;
cout<<a<<endl;
我们期待输出是什么,期待输出0x30,实在不行好歹也输出个48吧,出乎意料的是输出0.
0的ASCII码是0x30,这里把a当作unsigned char处理了,
所有这里认为a = ‘0’;
这个错误不算隐蔽,因为看得见输出,能很快定位错误
class StringHelper
{
public:
template<typename T>
static String Convert(T t)
{
std::ostringstream os;
os<<t;
return os.str();
}
template<typename R>
static R Convert(String str)
{
std::istringstream is(str);
R result;
is>>result;
return result;
}
。。。。。。。。。。。。。。。。。。。。。。
string data = "1";
byte a = StringHelper::Convert<byte>(data);
如果你这么干,那么你也会和我一样倒大霉了 ~>_<~