如何在 boost::uint8_t 中存储零的值

how to store the value of zero inside boost::uint8_t

本文关键字:存储 boost uint8      更新时间:2023-10-16

我有以下程序。奇怪的是,我期望零,但程序认为它是 48。如果我调试这个程序,我可以看到分配的值为 48,但如果我打印"someVar"的值,它会正确显示为 0。但是,如果我将"someVar"转换为uint16_t,那么一切正常。你能解释一下这个问题吗

#include "boost/cstdint.hpp"
#include <iostream>
#include "boost/lexical_cast.hpp"
using namespace boost;
int main(int argc, char ** args)
{
  uint8_t someVar = lexical_cast<uint8_t> (args[1]);
  if (someVar > 0)
    cout << "greater than zero" << endl;
  return 0;
}

字符零('0'确实是 48,其中数字零作为整数,显然确实是零)。如果你做一个lexical_cast<int>,它会做你想要的,并将 args[1] 转换为字符串中的整数。由于uint8_t是一个字符,我怀疑词汇演员表会按照您的要求进行操作,并为您提供字符串的第一个字符。