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

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

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值