如何在 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::oct
是 str.setf(std::ios_base::oct, std::ios_base::basefield)
的语法糖,它(如您所见)是强制流以八进制表示法打印整数值的方法之一。
您需要先使用 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;
我试过了
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::oct
是 str.setf(std::ios_base::oct, std::ios_base::basefield)
的语法糖,它(如您所见)是强制流以八进制表示法打印整数值的方法之一。
您需要先使用 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;