Des*_*tor -5 c++ hex iostream numeric octal
考虑以下计划:
#include <iostream>
int main()
{
std::cout<<std::ios::showbase<<123<<", "<<std::hex<<123<<", "<<std::oct<<123<<'\n';
}
Run Code Online (Sandbox Code Playgroud)
预期输出:123,0x7b,0173
获得的输出:512123,7b,173(参见现场演示:http://ideone.com/Khzj5j )
但如果我稍微修改上述程序如下:
#include <iostream>
using namespace std;
int main()
{
cout<<showbase<<123<<", "<<hex<<123<<", "<<oct<<123<<'\n';
}
Run Code Online (Sandbox Code Playgroud)
现在我得到了理想的输出.(请参阅http://ideone.com/gcuHbm上的现场演示).
为什么第一个程序输出不正确但第二个程序没有?第一个项目出了什么问题?
std::ios::showbase是格式标志. std::showbase是一个函数,它接受std::ios_base并调用ios_base::setf(std::ios::showbase)它来设置showbase标志.
您在第一个示例中使用先前,在第二个示例中使用后者.