注册 登录
编程论坛 C++教室

cout格式化输出问题

庄严之家fj 发布于 2013-03-04 09:41, 411 次点击
以下是我的代码,为什么输出没有格式化效果?
#include<iostream>
using namespace std;
int main()
{
    int x=30,y=300,z=1024;
    cout<<x<<' '<<y<<' '<<z<<endl;
    cout.setf(ios::showbase|ios::uppercase);//设置基指示符和数值中字母大小写的输出
    cout<<x<<' '<<y<<' '<<z<<endl;
    cout.unsetf(ios::showbase|ios::uppercase);//取消设置基指示符和数值中大小写的输出
    cout.setf(ios::oct);//设置未八进制输出,此设置不取消一直有效
    cout<<x<<' '<<y<<' '<<z<<endl;//按八进制输出
    cout.setf(ios::showbase|ios::uppercase);//设置基指示符和数值中的字母大小写的输出
    cout<<x<<' '<<y<<' '<<z<<endl;
    cout.unsetf(ios::showbase|ios::uppercase);
    cout.unsetf(ios::oct);
    cout.setf(ios::hex);//设置未十六进制输出,此设置不取消一直有效
    cout<<x<<' '<<y<<' '<<z<<endl;//按十六进制输出
    cout.setf(ios::showbase|ios::uppercase);//设置基指示符和数值中的字母大小写的输出
    cout<<x<<' '<<y<<' '<<z<<endl;
    cout.unsetf(ios::showbase|ios::uppercase);
    cout.unsetf(ios::hex);
    return 0;
}

输出结果:
30 300 1024
30 300 1024
30 300 1024
30 300 1024
30 300 1024
30 300 1024
3 回复
#2
rjsp2013-03-04 09:58
这么乱叫别人怎么回答?

我来先举个例子教你怎么提问题,比如问:
程序代码:
#include <iostream>
using namespace std;

int main()
{
    cout.setf( ios::oct );
    cout << 30 << endl;

    return 0;
}
为什么输出30,而非其八进制形式的36?
别人就会这么答:
cout.setf( ios::oct ) 应当为 cout.setf( ios_base::oct, ios_base::basefield  )

#3
Susake2013-03-04 10:04
代码一大团.......
#4
庄严之家fj2013-03-04 10:23
回复 2楼 rjsp
受教了!
但是cout.setf( ios::oct ) 和 cout.setf( ios_base::oct, ios_base::basefield  )两者有什么差别,为什么前者无法有格式化效果?
1