gpt4 book ai didi

c++ - 如何正确设置用于流操作的ios标志?

转载 作者:行者123 更新时间:2023-12-01 14:43:53 28 4
gpt4 key购买 nike

我在C++中键入了一个基本示例,在其中尝试在屏幕上以十六进制的形式打印数字:

#include <iostream>
#include <iomanip>

int main()
{
unsigned number {314};

auto flags {std::ios::showbase | std::ios::hex};
std::cout.setf(flags);

// expected output: 0x13A
std::cout << number << std::endl;

std::cout.unsetf(flags);

// expected output: 314
std::cout << number << std::endl;

return 0;
}

但是,该数字永远不会以十六进制格式显示。我是否正确设置了标志?

最佳答案

要设置hex,您需要清除所有basefield。如果您不这样做,则同时设置了hexdec标志。虽然我不确定如果为同一掩码设置了多个标志会发生什么,但是当同时设置了dechex标志时,您的实现选择使用dec

你要:

std::cout.setf(std::ios::hex, std::ios::basefield);
std::cout.setf(std::ios::showbase);

然后用
std::cout.setf(std::ios::dec, std::ios::basefield);
std::cout.unsetf(std::ios::showbase);

关于c++ - 如何正确设置用于流操作的ios标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59273928/

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