3

我试过这个

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

它可以工作,但使用操纵器 setiosflags

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

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

那么如何将十进制数打印为八进制数setiosflags呢?

4

4 回答 4

6

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

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

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

在网上看到

于 2019-08-16T11:18:28.047 回答
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部分是可选的。

于 2019-08-16T11:23:48.657 回答
0

你也可以使用

 printf("%o",79);
于 2019-08-16T11:28:07.757 回答
0

试试这个,你的问题就会得到解决。cout << 十六进制 << 79; cout << 八月 << 79;

于 2019-08-16T21:39:50.180 回答