700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > c++ IO流---输入输出流 格式控制字符

c++ IO流---输入输出流 格式控制字符

时间:2024-01-25 19:22:47

相关推荐

c++ IO流---输入输出流  格式控制字符

流:若干字节数据从一端到另一端我们叫做流

例:操作文件,从程序到文件,数据的流动的操作称为流操作

流类体系

专门处理输入输出流、字符流、文件流,包含有:

流对象

流运算符 >> <<

输入&输出流对象 + 流运算符 >> << 处理输入输出的数据

字符流对象 + 流运算符 >> << 处理字符流

文件的对象 + 流运算符 >> <<读写文件

基本输入、输出流

istream 类---cin 输入

ostream类---cout 输出

输出流除了cout外,还有一些别的对象(效果和cout一样)

cerr ---标准出错

clog ---日志文件输出

void testostream()//output {cout << "标准输出" << endl;//cin & cout都可以重定向cerr << "标准错误输出" << endl;//觉得程序可能出错时用cerr输出标识作用 不能重定向 clog << "日志文件输出" << endl; //可以重定向为文件}int main(){testostream();}/*输出*/标准输出标准错误输出日志文件输出

freopen(重定向)

可以把程序的输入、输出重定向为文件

重定向是文件中的数据的格式要与程序读取的格式一致

输入重定向

int main(){freopen("1.txt","r",stdin); //参数:文件名 读写方式:写 流int a,b;scanf("%d%d",&a,&b); //把基本输入定向为文件,程序所有的输入由文件1.txt完成cout << a + b << endl;//数据在文件中的格式要和程序读取的格式一致}/*输出*/在 1.txt 输入1 2 3

输出重定向

int main(){freopen("1.txt","r",stdin);int a,b;scanf("%d%d",&a,&b); freopen("2.text","w",stdout);printf("%d",a+b);}/*输出*/在 2.txt 中输出3

字符类的处理

正常的操作

通过IO流对象调用成员函数的方式

单个字符 & 多个字符 & 字符串的输出处理

//通过IO流对象调用成员函数的方式 传常量&变量都可以void testostream() {//单个字符的输出cout.put('a');//传常量 通过IO流对象调用成员函数的方式cout << 'a' << endl; //正常的输出方式也可以char c = 'C';cout.put(c); //传变量cout << c << endl;//多个字符|字符串的输出cout.write("ILoveyou",4);/*写入输出 后面的参数:指定长度输出,超过长度的部分不做 输出 截取输出没有'\0' 截取了前面4位*/}int main(){testostream();}/*输出*/aaCCILov

单个字符&多个字符&字符串的输入处理

void testostream(){//单个字符的输入/* char c;c=cin.get();cout.put(c);用中间变量接收返回值,再做输出*/cout.put(cin.get()); //要处理回车cout << endl;//多个字符/字符串的输入cout << "字符串的处理"<<endl;while (cin.get() != '\n'); //while(getchar()!='\n');char str[20] = ""; //需要准备一个字符串 注意不是返回值 不能一步到位cin.getline(str, 20);//输入函数cout.write(str, 20); //输出函数相对于流操作更安全可以指定长度&也需要清空缓冲区处理}int main() {testostream();}/*输入*/A/*输出*/A字符串的处理hellohello //字符串结束标记

注意不能用来处理string

string text;cin.getline(text,20); //报错:不能处理string,只能处理char*

格式控制字符

包含头文件 <iomanip>

常用的格式控制:一种是调用成员函数方式,一种是流控制字符去做

设置有效位数: setprecision(n),不是指设置小数位是n位

设置精度: fixed 结合 setprecision 使用

流控制字符 - - - c++用来控制格式的操作

设置格式

int main(){double pi = 34.12343;cout << "设置有效位数是:" << setprecision(4) << pi << endl;//从整数位开始算cout << "有效小数位:" << fixed << setprecision(4) << pi << endl;//从小数位开始算//所有的流控制字符都会对应一个成员函数的方式cout.precision(4); cout << "有效小数位:" << pi; /*设置完流格式不一定要立即输出,可以缓慢输出(在下一行输出)*/double pi = 34.12369;cout << "设置有效位数是:" << setprecision(4) << pi << endl;cout << "有效小数位:" << fixed << setprecision(4) << pi << endl;cout.precision(4); //所有的流控制符都会对应一个成员函数的方式cout << "有效小数位:" << pi;}/*输出 四舍五入 */设置有效位数是:34.12 //从最大的整数部分开始算 没有包含小数点有效小数位:34.1234//结合fixed使用设置有效小数位有效小数位:34.1234 设置有效位数是:34.12有效小数位:34.1237有效小数位:34.1237

进制输出

int main(){cout << hex << 32 << endl; //16进制cout << oct << 15 << endl; //8进制输出//流控制字符的方式,不能是任意进制,任意进制的默认10进制输出cout << setbase(2) << 7 << endl; //2进制无效}/*输出*/7

对齐方式和数据的宽度问题 制表符 ' \t '

setw():设置输出数据的宽度

限制每个数据的位数不足补空格

8位制表,不足8位补空格

超过8位,按照16位制表

//默认右对齐int main(){cout << setw(8) << "123" << setw(8) << "12344" << setw(8) << "3444" << endl;//ios::right右对齐 ios::left左对齐 数据不够用空格占位cout << setiosflags(ios::left);cout << setw(8) << "123" << setw(8) << "12344" << setw(8) << "3444" << endl;cout.width(8);cout<<"123"<<"123"<<"666"; //调用成员函数的方式,只能管一个制表}/*输出*/123 12344 3444 //默认是右对齐方式12312344 3444123123666

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。