C++中 unsigned char != byte

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);

如果你这么干,那么你也会和我一样倒大霉了 ~>_<~

 

你可能感兴趣的:(C++,c,String,OS,Class,byte)