C/C++——输入输出特别注意点

来源:互联网 发布:oracle在线数据库 编辑:程序博客网 时间:2024/05/17 06:50

常用概念注意点

  1. printf(“%d”, “C++”); //输出宇符串”C++”的地址

  2. 实际上,在内存中为每一个数据流开辟一个内存缓冲区,用来存放流中的数据。当用cout和插入运算符“<<”向显示器输出数据时,先将这些数据送到程序中的输出缓冲区保存,直到缓冲区满了或遇到endl,就将缓冲区中的全部数据送到显示器显示出来。在输入时,从键盘输入的数据先放在键盘的缓冲区中,当按回车键时,键盘缓冲区中的数据输入到程序中的输入缓冲区,形成cin流,然后用提取运算符“ >>”从输入缓冲区中提取数据送给程序中的有关变量。总之,流是与内存缓冲区相对应的,或者说,缓冲区中的数据就是流。

  3. cout流在内存中对应开辟了一个缓冲区,用来存放流中的数据,当向cout流插 人一个endl时,不论缓冲区是否已满,都立即输出流中所有数据,然后插入一个换行符, 并刷新流(清空缓冲区)。注意如果插人一个换行符”\n“(如下),则只输出和换行,而不刷新cout流(但并不是所有编译系统都体现出这一区别)。
    cout<<a<<"\n";

  4. cerr流对象是标准错误流,cerr流已被指定为与显示器关联。cerr的作用是向标准错误设备(standard error device)输出有关出错信息。cerr与标准输出流cout的作用和用法差不多。但有一点不同:cout流通常是传送到显示器输出,但也可以被重定向输出到磁盘文件,而cerr流中的信息只能在显示器输出。当调试程序时,往往不希望程序运行时的出错信息被送到其他文件,而要求在显示器上及时输出,这时应该用cerr。cerr流中的信息是用户根据需要指定的。

使用控制符控制输出格式

#include <iostream>#include <iomanip>//不要忘记包含此头文件using namespace std;int main(){   int a;   cout<<"input a:";   cin>>a;   cout<<"dec:"<<dec<<a<<endl;  //以十进制形式输出整数   cout<<"hex:"<<hex<<a<<endl;  //以十六进制形式输出整数a   cout<<"oct:"<<setbase(8)<<a<<endl;  //以八进制形式输出整数a   char *pt="China";  //pt指向字符串"China"   cout<<setw(10)<<pt<<endl;  //指定域宽为,输出字符串   cout<<setfill('*')<<setw(10)<<pt<<endl;  //指定域宽,输出字符串,空白处以'*'填充   double pi=22.0/7.0;  //计算pi值   //按指数形式输出,8位小数   cout<<setiosflags(ios::scientific)<<setprecision(8);   cout<<"pi="<<pi<<endl;  //输出pi值   cout<<"pi="<<setprecision(4)<<pi<<endl;  //改为位小数   cout<<"pi="<<setiosflags(ios::fixed)<<pi<<endl;  //改为小数形式输出   return 0;}

运行结果如下
input a:34↙(输入a的值)
dec:34 (十进制形式)
hex:22 (十六进制形式)
oct:42 (八进制形式)
China (域宽为)
****China (域宽为,空白处以’‘填充)
pi=3.14285714e+00 (指数形式输出,8位小数)
pi=3.1429e+00 (指数形式输出,4位小数)
pi=3.143 (小数形式输出,精度仍为)

用流对象的成员函数控制输出格式

#include <iostream>using namespace std;int main( ){   int a=21   cout.setf(ios::showbase);//显示基数符号(0x或)   cout<<"dec:"<<a<<endl;         //默认以十进制形式输出a   cout.unsetf(ios::dec);         //终止十进制的格式设置   cout.setf(ios::hex);           //设置以十六进制输出的状态   cout<<"hex:"<<a<<endl;         //以十六进制形式输出a   cout.unsetf(ios::hex);         //终止十六进制的格式设置   cout.setf(ios::oct);           //设置以八进制输出的状态   cout<<"oct:"<<a<<endl;         //以八进制形式输出a   cout.unsetf(ios::oct);   char *pt="China";              //pt指向字符串"China"   cout.width(10);                //指定域宽为   cout<<pt<<endl;                //输出字符串   cout.width(10);                //指定域宽为   cout.fill('*');                //指定空白处以'*'填充   cout<<pt<<endl;                //输出字符串   double pi=22.0/7.0;            //输出pi值   cout.setf(ios::scientific);    //指定用科学记数法输出   cout<<"pi=";                   //输出"pi="   cout.width(14);                //指定域宽为   cout<<pi<<endl;                //输出pi值   cout.unsetf(ios::scientific); //终止科学记数法状态   cout.setf(ios::fixed);        //指定用定点形式输出   cout.width(12);               //指定域宽为   cout.setf(ios::showpos);      //正数输出“+”号   cout.setf(ios::internal);     //数符出现在左侧   cout.precision(6);            //保留位小数   cout<<pi<<endl;               //输出pi,注意数符“+”的位置   return 0;}

运行情况如下
dec:21(十进制形式)
hex:0x15 (十六进制形式,以x开头)
oct:025 (八进制形式,以开头)
China (域宽为)
****China (域宽为,空白处以’‘填充)
pi=**3.142857e+00 (指数形式输出,域宽,默认位小数)
+***3.142857 (小数形式输出,精度为,最左侧输出数符“+”)

0 0
原创粉丝点击