我已经尝试过
cout. setf(ios::oct, ios::basefield) ;
cout << 79 << endl;
可以,但是 使用操纵器setiosflags
cout << setiosflags (ios::oct) << 79 << endl;
它不起作用,屏幕上仍然打印了79张。
尽管我听说setiosflags
是`setf'的替代。
然后如何使用setiosflags
将十进制数打印为八进制数?
答案 0 :(得分:6)
保持简单和愚蠢(或简称为KISS):
std::cout << std::oct << 79 << std::endl;
std::oct
是str.setf(std::ios_base::oct, std::ios_base::basefield)
的语法糖,正如您所注意到的,这是强制流以八进制表示法打印整数值的方法之一。
答案 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;