C++ stringstream操作符<&书信电报;不';按位求反时不能按预期工作
我想对存储在stringstream对象中的数据使用位求反。以下代码可以正常工作:C++ stringstream操作符<&书信电报;不';按位求反时不能按预期工作,c++,c++11,C++,C++11,我想对存储在stringstream对象中的数据使用位求反。以下代码可以正常工作: std::uint8_t x = 0x01; x = ~x; std::stringstream buf; buf << x; std::string data = buf.str(); std::cout << std::hex << static_cast<int>(data[0]) << std::endl; //result: fffffffe
std::uint8_t x = 0x01;
x = ~x;
std::stringstream buf;
buf << x;
std::string data = buf.str();
std::cout << std::hex << static_cast<int>(data[0]) << std::endl;
//result: fffffffe
std::uint8\u t x=0x01;
x=~x;
std::stringstreambuf;
buf结果~x
不是类型std::uint8\u t
。你可以用
std::uint8_t x = 0x01;
std::stringstream buf;
buf << static_cast<std::uint8_t>(~x);
std::string data = buf.str();
std::cout << std::hex << static_cast<int>(data[0]) << std::endl;
//result: 0x2d
x
包含值þ
,该值具有ASCII值254=0xfe
您确定为第一个示例显示了正确的输出吗?如果您提到非std::uint8_t
类型导致截断的原因,那就更好了。
std::uint8_t x = 0x01;
std::stringstream buf;
buf << static_cast<std::uint8_t>(~x);
std::string data = buf.str();
std::cout << std::hex << static_cast<int>(data[0]) << std::endl;
//result: 0x2d
x = ~x;