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

How to print out a decimal number as octal number using setiosflags in C++

我试过了

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

它有效但是 使用操纵器 setiosflags

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

不行,屏幕上还打印着79
虽然我听说 setiosflags 是 `setf 的替代。

那么如何使用setiosflags将十进制数打印成八进制数呢?

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

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

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

See it online

您需要先使用 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 部分是可选的。

你也可以使用

 printf("%o",79);

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