gpt4 book ai didi

c++ - stringstream 的 showbase 和前导零

转载 作者:行者123 更新时间:2023-11-28 01:31:28 26 4
gpt4 key购买 nike

代码如下:

std::wstringstream wss;    

wss.setf(std::ios_base::hex, std::ios_base::basefield);

wss.setf(std::ios_base::showbase);
// wss << std::showbase;

// wss.width(2);
wss.fill('0');

wss << std::setw(2) << 7;
// wss << std::noshowbase;
wss.unsetf(std::ios_base::showbase);
wss << std::setw(2) << 0;
wss << std::setw(2) << 20;
wss << std::setw(2) << 6;

auto ret = wss.str();

如果我设置 showbase对于流,我总是得到以下输出:
0x7001406 , 而不是 0x07001406

我怎样才能在 7 之前得到这个零?我不想设置前缀 0x手动点赞wss << "0x" .

提前致谢!

最佳答案

感谢@Aconcagua 提供线索!

我认为我们可以像这样使用 std::ios_base::adjustfieldstd::ios_base::internal :

wss.setf(std::ios_base::hex, std::ios_base::basefield);
int oldFlag = wss.setf(std::ios_base::internal, std::ios_base::adjustfield);

然后

wss.setf(std::ios_base::showbase);
wss.fill('0');

wss << std::setw(4) << 7;
wss.unsetf(std::ios_base::showbase);
// wss.setf(oldFlag);

wss << std::setw(2) << 0;
wss << std::setw(2) << 20;
wss << std::setw(2) << 6;

然后我得到 0x07001406。如果我不能这样做,请纠正我,谢谢!

关于c++ - stringstream 的 showbase 和前导零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51357013/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com