如何在C ++中使用setiosflags将十进制数打印为八进制数

时间:2019-08-16 11:15:33

标签: c++ manipulators

我已经尝试过

cout. setf(ios::oct, ios::basefield) ;
cout << 79 << endl;

可以,但是 使用操纵器setiosflags

cout << setiosflags (ios::oct) << 79 << endl;

它不起作用,屏幕上仍然打印了79张。
尽管我听说setiosflags是`setf'的替代。

然后如何使用setiosflags将十进制数打印为八进制数?

4 个答案:

答案 0 :(得分:6)

保持简单和愚蠢(或简称为KISS):

std::cout << std::oct << 79 << std::endl;

std::octstr.setf(std::ios_base::oct, std::ios_base::basefield)的语法糖,正如您所注意到的,这是强制流以八进制表示法打印整数值的方法之一。

See it online

答案 1 :(得分:4)

您需要先使用std::resetiosflags重设标志:

#include <iostream>
#include <iomanip>

int main()
{
  int x = 42;
  std::cout << std::resetiosflags(std::ios_base::dec)
            << std::setiosflags(std::ios_base::hex | std::ios_base::showbase)
            << x;
}

| std::ios_base::showbase部分是可选的。

答案 2 :(得分:0)

您也可以使用

 printf("%o",79);

答案 3 :(得分:0)

只需尝试一下,您的问题即可解决。 cout <<十六进制<< 79; cout <<八月<< 79;