在setiosflags函数中使用十六进制标志
Using hex flag inside setiosflags function
int a=60;
cout<<setiosflags(ios::hex|ios::showbase|ios::uppercase);
cout<<a<<endl;
上面的代码不起作用,但是如果我使用
cout<<hex
然后
cout<<setiosflags(ios::showbase|ios::uppercase)
然后它正在工作
为什么? 我怎么知道哪一个可以在setiosflags((中使用?
您需要先调用resetiosflags
,然后再调用setiosflags
。 这样做的原因是setiosflags(ios::hex|ios::showbase|ios::uppercase)
只是将这些标志附加到流中,就像调用setf
一样,这会在流中给出冲突的标志。 用
std::cout << std::resetiosflags(std::ios_base::dec)
<< std::setiosflags(std::ios::hex|std::ios::showbase|std::ios::uppercase)
<< a << endl;
将使其正确显示a
。
对于第一个版本,您首先必须清除std::ios::dec
,否则它优先:
std::cout << resetiosflags (std::ios::dec);
您可以通过使用适当的掩码调用setf
一次性执行此操作,例如:
std.cout.setf (std:ios.hex, std.ios.basefield);
正如cpp首选项中所述,std::cout << hex
为您执行此操作。
相关文章:
- 如何在openssl-ecc中获取十六进制格式的私钥
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- 如何在C++中用std::cout正确显示带十六进制的字符串文本
- 通过错误处理,在C++中可靠地获得用户十六进制输入
- 为什么mpfr_printf与十六进制浮点(%a转换说明符)的printf不同
- 在 std::无符号字符的向量处存储 int 的十六进制表示形式
- 指向存储在字符串 c++ 中的十六进制
- 读取文件中所有可能的十六进制 16 字节序列并打印每个序列
- C ++如何使用UTF8十六进制代码打印UTF8符号?
- 如何将字节数组元素替换为修改的十六进制 ASCII 符号?
- 如何在C++中将十六进制字符串转换为文本数据
- 使用 sprintf 将十六进制0xAABBCC转换为字符串"AA:BB:CC"
- 绝对编码器十六进制输入
- 为什么C++总是显示十六进制内存地址,而不仅仅是整数?
- C++17 十六进制浮点文字单精度后缀冲突?
- 是否可以在C++中获取 CHAR 的有效十六进制地址?
- 在setiosflags函数中使用十六进制标志
- STD :: Ostream忽略了通过setf()在基础上设置的十六进制标志