7.2.1cout、cerr和clog流 2、cerr流对象 >cer流对象是标准出错流,被指定为与显示器关联。 >cerr的作用是向标准出错设备输出有关出错信息 >cerr与cout的区别: cout流通常是传送到显示器输出,也可重定向输出 到磁盘文件,而cerr流中的信息只能在显示器输出。 15
15 7.2.1 cout、cerr和clog 流 2、cerr流对象 ➢cerr流对象是标准出错流,被指定为与显示器关联。 ➢cerr的作用是向标准出错设备输出有关出错信息 ➢ cerr与cout的区别: cout流通常是传送到显示器输出,也可重定向输出 到磁盘文件,而cerr流中的信息只能在显示器输出
7.2.1cout、cerr和clog流 3、clog流对象:也是标准出错流,作用和cerr 相同。 cerr和clog区别: >cerr不经过缓冲区,直接向显示器输出 > cog经过缓冲区,缓冲区装满后或遇到 end时,向显示器输出。 16
16 7.2.1 cout、cerr和clog 流 3、clog 流对象:也是标准出错流,作用和 cerr 相同。 cerr和clog区别: ➢ cerr 不经过缓冲区,直接向显示器输出 ➢ clog 经过缓冲区,缓冲区装满后或遇到 endl 时,向显示器输出
举例7.1cerr、clog应用举例 ①#include<iostream> ②include<math.h> ③using namespace std; ④int main(0 ⑤{float a,b,c,s; cout<<"please input a,b,c:"; 7 cin>>a>>b>>c;s=(a+b+c)/2; ⑧if(a=0lb==0llc=0) ⑨ clog<"error111"<<endl;∥改cout? ⑩ else if (a+b<cllb+c<alla+c<b) ① cerr<<"error 222"<<endl; ② else ③ {s=sqrt(s*(s-a)*(s-b)*(s-c)); ④ cout<<"s="<<s<<endl; ⑤ 3 ⑥return 0; 17 ⑩}
17 举例7.1 cerr 、clog应用举例 ① #include <iostream> ② #include <math.h> ③ using namespace std; ④ int main() ⑤ {float a,b,c,s; ⑥ cout<<"please input a,b,c:"; ⑦ cin>>a>>b>>c; s=(a+b+c)/2; ⑧ if (a==0||b==0||c==0) ⑨ clog<<"error 111"<<endl; // 改cout ? ⑩ else if (a+b<c||b+c<a||a+c<b) ⑪ cerr<<"error 222"<<endl; ⑫ else ⑬ {s=sqrt(s*(s-a)*(s-b)*(s-c)); ⑭ cout<<"s="<<s<<endl; ⑮ } ⑯ return 0; ⑰ }
7.2.2格式输出 输出数据时可以指定输出格式,有两种方法: ①使用控制符输出格式:头文件iomanip中定义 控制符 作用 dec,hex,oct 分别设置整数的基数为10、16、8 setbase (n) 设置整数基数为n(n为10,16,8三者之一) setfill (c) 设置填充字符c,c是字符常量或变量 setprecision(n) 设置实数精度为n位 setw(n) 设置字段宽度为n setiosflags (ios::left 输出数据左/右对齐 right resetioflags ( 终止已设置的输出格式,在括号中指定内容
18 7.2.2 格式输出 输出数据时可以指定输出格式,有两种方法: ① 使用控制符输出格式:头文件 iomanip中定义 控 制 符 作 用 dec, hex, oct 分别设置整数的基数为10、16、8 setbase (n) 设置整数基数为n ( n为10,16,8三者之一) setfill ( c ) 设置填充字符c,c是字符常量或变量 setprecision (n) 设置实数精度为n位 setw (n) 设置字段宽度为 n setiosflags (ios::left / right ) 输出数据左/右对齐 resetioflags ( ) 终止已设置的输出格式,在括号中指定内容
① #include<iostream.h>∥使用控制符控制输出格式举例7.2 ② #include <iomanip.h> ③ int main() ④ inta=123;char*pt="China"; ⑤ double pi=22.0/7.0; ⑥ cout<<"dec:"<<dec<<a<<endl; ∥以十进制格式 ⑦ cout<<"hec:"<<hex<<a<<endl; 以十六进制格式 ⑧ cout<<"oct:"<<oct<<a<<endl; 以八进制格式 ⑨ cout<<setw(1O)<ptk<setw(8)<pik<endl;∥指定域宽为10和8 ⑩ cout<<setfill('*")<setw(1o<<ptk<endl;∥指定域宽为10,空白以*填充 ① cout<<"pi="<<pi<<endl; @ cout<<“pi=”<setprecision(4)<<pik<endl;l改精度为4位 cout<<"pi="<setiosflags(ios:fixed)<pi<<endl;W改为小数形式 ③ return 0; 四 } 19
19 ① #include <iostream.h> // 使用控制符控制输出格式举例7.2 ② #include <iomanip.h> ③ int main( ) ④ { int a=123; char *pt = "China"; ⑤ double pi = 22.0/7.0; ⑥ cout <<"dec:"<<dec<<a<<endl; // 以十进制格式 ⑦ cout <<"hec:"<<hex<<a<<endl; //以十六进制格式 ⑧ cout <<"oct:"<<oct<<a<<endl; //以八进制格式 ⑨ cout<<setw(10)<<pt<<setw(8)<<pi<<endl; // 指定域宽为10和8 ⑩ cout<<setfill('*')<<setw(10)<<pt<<endl; // 指定域宽为10,空白以*填充 ⑪ cout<<"pi="<<pi<<endl; ⑫ cout<<“pi=”<<setprecision(4)<<pi<<endl; //改精度为4位 cout<<"pi="<<setiosflags (ios::fixed) <<pi<<endl; // 改为小数形式 ⑬ return 0; ⑭ }