C++ 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

我想对存储在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\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;