目录页 Contents 1 C++基本输入输出 2 C语言格式化输出 3 C语言文件读写 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 目录页 Contents 1 2 C++ 基本输入输出 C 语言格式化输出 3 C 语言文件读写
C++基本输人输出 口数据流 操纵符 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan C++ 基本输入输出 数据流 操纵符
I/O基本概念 C++本身没有输入输出语句。 C++中的输入输出是通过相应的I/0流类库实现的。 数据流 将数据从一个对象到另一个对象的流动抽象为“流” ●提取(读):从流对象中获取数据,运算符为">>" 。插入(写):向流对象中添加数据,运算符为"<<" 提取和插入运算符是所有标准C++数据类型预先设计的 插入运算符与操纵符一起使用,可以控制输出格式 4 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan I/O 基本概念 4 C++本身没有输入输出语句。 C++中的输入输出是通过相应的I/O流类库实现的。 将数据从一个对象到另一个对象的流动抽象为“流” 提取(读):从流对象中获取数据,运算符为 ">>" 插入(写):向流对象中添加数据,运算符为 "<<" 提取和插入运算符是所有标准 C++数据类型预先设计的 插入运算符与操纵符一起使用,可以控制输出格式 数据流
输入输出操作 口头文件iostream中预定义的四个输入输出对象 ▣cin:标准输入(键盘等) 口cout:标准输出(屏幕、打印机等) ▣cer:标准错误输出,没有缓冲,立即被输出 口clog:与cerr类似,但有缓冲,缓冲区满时被输出 操纵符 口用于控制数据的输出格式 ▣两种途径:iomanip头文件和ios base类 5 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 输入输出操作 5 cin:标准输入(键盘等) cout:标准输出(屏幕、打印机等) cerr:标准错误输出,没有缓冲,立即被输出 clog:与cerr类似,但有缓冲,缓冲区满时被输出 头文件 iostream 中预定义的四个输入输出对象 操纵符 用于控制数据的输出格式 两种途径:iomanip 头文件和 ios_base 类
操纵符 (需包含头文件iomanip) 操纵符 含义 endl 插入换行符,并刷新流 setw(n) 设置域宽 cout.width(n) setfill((字符) 设置填充符 cout.fil(字符) left right 对齐方式(左对齐/右对齐),缺省右对齐 fixed 使用定点方式输出 scientific 使用指数形式 setprecision(n) 设置输出的有效数字个数; 若在fixed或scientific后使用,则设置小数位数 showpoint 显示小数点及尾随零,即使没有小数部分 6 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 操纵符 6 操纵符 含义 endl 插入换行符,并刷新流 setw(n) cout.width(n) 设置域宽 setfill(字符) cout.fill(字符) 设置填充符 left / right 对齐方式(左对齐/右对齐),缺省右对齐 fixed 使用定点方式输出 scientific 使用指数形式 setprecision(n) 设置输出的有效数字个数; 若在 fixed 或 scientific 后使用,则设置小数位数 showpoint 显示小数点及尾随零,即使没有小数部分 (需包含头文件 iomanip )
操纵符(域宽) ▣设置宽度:setw(宽度)或cout.width(宽度) intA[3][3]={{11,12,13},{21,22,23},31,32,33}}; for (int i=0;i<3;i++) for (int j=0;j<3;j++) cout<setw(4)<A[i][j];/∥设置输出宽度 ex07_setw.cpp for (int i=0;i<3;i++) for (int j=0;j<3;j++) { cout.width(4);/∥设置输出宽度 cout <A[i][j]; setw和cout.width只改变紧随其后的域,即只起一次作用 ·若数据超过设置的宽度,则自动扩展到所需最少宽度 7 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 操纵符(域宽) 7 设置宽度:setw(宽度) 或 cout.width(宽度) ► setw 和 cout.width 只改变紧随其后的域,即只起一次作用 ► 若数据超过设置的宽度,则自动扩展到所需最少宽度 int A[3][3]={{11,12,13},{21,22,23},{31,32,33}}; for (int i=0; i<3; i++) for (int j=0; j<3; j++) cout << setw(4) << A[i][j]; // 设置输出宽度 for (int i=0; i<3; i++) for (int j=0; j<3; j++) { cout.width(4); // 设置输出宽度 cout << A[i][j]; } ex07_setw.cpp
操纵符(填充符) 口设置填充符:setfill(字符)或cout.fill(字符) intA[3][3]={11,12,13},{21,22,23},{31,32,33}; /cout.fi11('*);/∥设置填充符 cout<setfi:11('*');/设置填充符 for(int i=0;i<3;i++) for(int j=0;j<3;j++) cout<setw(4)<A[i][j];/∥设置输出宽度 ex07_fill.cpp 缺省的填充符为空格 ·该命令的作用将一直保留,直到下次改变为止 8 http://math.ecnu.edu.cn/-jypan
http://math.ecnu.edu.cn/~jypan 操纵符(填充符) 8 设置填充符:setfill(字符) 或 cout.fill(字符) ► 缺省的填充符为空格 ► 该命令的作用将一直保留,直到下次改变为止 int A[3][3]={{11,12,13},{21,22,23},{31,32,33}}; // cout.fill('*'); // 设置填充符 cout << setfill('*'); // 设置填充符 for(int i=0; i<3; i++) for(int j=0; j<3; j++) cout << setw(4) << A[i][j]; // 设置输出宽度 ex07_fill.cpp
操纵符(对齐方式) 口设置对齐方式:left/right intA[3][3]={{11,12,13),{21,22,23},{31,32,33}; cout<1eft;/∥设置左对齐 for(int i=0;i<3;i++) { for(int j=0;j<3;j++) cout <setw(4)<<A[i][j]; cout <"\n"; ex07_left.cpp 缺省为右对齐 ·left/right的作用是持久的,直到遇到下一个同类型命令 9 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 操纵符(对齐方式) 9 设置对齐方式:left / right ► 缺省为右对齐 ► left/right 的作用是持久的,直到遇到下一个同类型命令 int A[3][3]={{11,12,13},{21,22,23},{31,32,33}}; cout << left; // 设置左对齐 for(int i=0; i<3; i++) { for(int j=0; j<3; j++) cout << setw(4) << A[i][j]; cout << "\n"; } ex07_left.cpp
操纵符(浮点数输出格式) 口以定点格式输出浮点数:fixed cout<fixed;∥定点格式 for (int i=0;i<3;i++) cout <a[i]; ▣ 以科学计数法(指数形式)输出浮点数:scientific ex07_fixed_scientific.cpp doub1ea[3]={2.7182818,31.416,987080}; cout<scientific;/∥以指数形式输出 for (int i=0;i<3;i++) cout <a[i]; 10 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 操纵符(浮点数输出格式) 10 以定点格式输出浮点数:fixed 以科学计数法(指数形式)输出浮点数:scientific double a[3]={2.7182818, 31.416, 987000}; cout << scientific; // 以指数形式输出 for (int i=0; i<3; i++) cout << a[i]; ex07_fixed_scientific.cpp cout << fixed; // 定点格式 for (int i=0; i<3; i++) cout << a[i];
操纵符(浮点数精度) 口设置输出精度:setprecision doub1ea[3]={2.7182818,31.416,987080}; cout <setprecision(3); for (int i=0;i<3;i++) cout <a[i]; ex07_setprecision.cpp 缺省为输出小数点后6位 建议 用单独一条语句设置全局类指令 11 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 操纵符(浮点数精度) 11 设置输出精度:setprecision ► 缺省为输出小数点后 6 位 double a[3]={2.7182818, 31.416, 987000}; cout << setprecision(3); for (int i=0; i<3; i++) { cout << a[i]; } ex07_setprecision.cpp 建议 用单独一条语句设置全局类指令