c++的输入和输出

1. 输入/输出流的成员函数

put()函数
put函数常用的调用形式:
cout.put(char ch);
功能:用于输出一个字符,还可以是ASCII代码(或者是ASCII表达式)
cout.put(65);

get()函数

常用形式为:cin.get(ch);
功能:是从输入流中读取一个字符包括空白符,赋给字符变量ch如果读取成功则函数返回非0值,如果失败(遇文件结束符EOF)则函数返回0值

#include<iostream>
using namespace std;
int main()
{
	char ch;
	cout<<"输入数据:"<<endl;
	while(cin.get(ch))
	{
		cout.put(ch);
	}
	return 0;
 } 

在这里插入图片描述
在这里插入图片描述
getline函数
getline函数常用的调用形式为:
cin.getline(字符指针,字符个数n,终止标志字符);
功能:从输入流读取n-1个字符,赋给指定的字符数组(或字符指针),然后插入一个字符串结束标志“\n”;
如果在读取n-1个字符之前遇到指定的终止字符,则提前结束读取,然后插入一个字符串结束标志’\n’。

#include<iostream>
using namespace std;
int main()
{
	char line[20];
	cout<<"输入数据"<<endl;
	cin.getline(line,20,'t');
	cout<<line; 
	return 0;
 } 

在这里插入图片描述

2. 预定义类型输入输出的格式控制

用流成员函数进行输入输出格式控制

成员函数有
设置状态标准的流成员函数self()

ios::skipws 跳过输入中的空白符,用于输入
ios::left 输出数据在本域宽范围内左对齐,用于输出
ios::right 输出数据在本域宽范围内右对齐,用于输出
ios::internal 数据的符号位左对齐,数据本身右对齐,
符号和数据之间为填充符,用于输出
ios::dec 设置整数的基数为10,用于输入/输出
ios::oct 设置整数的基数为8,用于输入/输出
ios::hex 设置整数的基数为16,用于输入/输出
ios::showbase 输出整数时显示基数符号(八进制数以0打头,
十六进制数以0x打头),用于输入/输出
ios::showpoint 浮点数输出时带有小数点,用于输出
ios::uppercase 在以科学表示法格式E和以十六进制
输出字母时用大写表示,用于输出
ios::showpos 正整数前显示“+”符号,用于输出
ios::scientific 用科学表示法格式(指数)显示浮点数, 用于输出
ios::fixed 用定点格式(固定小数位数)显示浮点数,用于输出
ios::unitbuf 完成输出操作后立即刷新所有的流,用于输出
ios::stdio 完成输出操作后刷新stdout和stderr,用于输出

#include<iostream>
using namespace std;  
int main()
{ cout.setf(ios::showpos|ios::scientific);
cout <<567<<" "<<567.89<<endl;
return 0; }

在这里插入图片描述

清理状态标志的流成员函数unself()

功能:清除某一状态标志,即是将某一状态标志位置“0”,

说明:
流成员函数unsetf括号中的参数flags与流成员函数setf相同。

设置域宽的流成员函数width()

功能:设置域宽为n位
注意:所设置的域宽仅对下一个流输出操作有效,当一次输出操作完成之后,域宽又恢复为默认域宽0。

设置实数的精度流成员函数precision()

功能:设置实数的精度为n位,在以一般十进制小数形式输出时n代表有效数字。在以fixed(固定小数位数)形式和scientific(指数)形式输出时n为小数位数。

填充字符的流成员函数fill()

功能:当输出值不满域宽时用填充字符来填充,默认情况下填充字符为空格。
说明:在使用填充字符函数fill时,必须与width函数相配合,否则就没有意义。

#include<iostream>
using namespace std;
int main()
{ double i=-5.1;
  cout.width(10);
  cout.fill('*');
  cout.setf(ios::internal);
  cout<<i<<endl;
  return 0;
}

在这里插入图片描述

#include<iostream>  //例9.5-1 流成员函数使用方法举例。
using namespace std; 
int main()
{ cout<<"-------1--------\n";
 cout.width(10);     //设置域宽为10位
 cout<<123<<endl;    //输出整数123,占10位,默认为右对齐
 cout<<"-------2--------\n";
 cout<<123<<endl;

 cout<<"-------3--------\n";
 cout.fill('&'); //设置填充字符为'&'
cout.width(10);  //设置域宽为10位
cout<<123<<endl;   
cout<<"-------4--------\n";
cout.setf(ios::left);   //设置左对齐
cout<<123<<endl;
return 0;}

在这里插入图片描述

#include<iostream>
using namespace std;
int main()
{cout<<"-------5--------\n";
 cout.precision(4);   //设置实数的精度为4位 
 cout<<123.45678<<endl; 
 cout<<"-------6--------\n";
 cout.setf(ios::fixed); 
 cout<<123.45678<<endl;
 cout<<"-------7--------\n";
 cout.width(15);//设置域宽为15位
 cout.unsetf(ios::fixed); 
 cout.setf(ios::scientific);
 cout<<123.45678<<endl; 
 return 0;
}  

在这里插入图片描述

使用预定义的操作符进行输入输出格式控制

这种方法使用了一种称为操纵符(也称为操纵函数或控制符)的特殊函数。
操纵符分为:
*不带形参的操纵符
*带形参的操纵符符
在很多情况下,使用操纵符进行格式化控制比用ios状态标志和成员函数要方便。
C++提供的预定义操纵符如下:
dec 设置整数的基数为10,用于输入/输出
hex 设置整数的基数为16用于输入/输出
oct 设置整数的基数为8用于输入/输出
ws 用于在输入时跳过开头的空白符,用于输入
endl 输出一个换行符并刷新输出流,用于输出
ends 插入一个空字符null,通常用来结束一个字符串,用于输出
flush 刷新一个输出流,用于输出
setbase(n) 设置整数的基数为n(n的取值为0,8,10 或16),n 的默认值为0,即以十进制形式输出。用于输入/输出
setfill© 设置c为填充字符,默认时为空格,用于输出
setprecision(n) 设置实数的精度为n位,在以一般十进制 小数形式输出时n代表有效数字。在以fixed(固定小数位数)形式和scientific(指数)形式输出时 n为小数位数设置域宽为n,用于输出
setw(n) 设置域宽为n, 用于输出
setiosflags(f) 设置由参数f指定的状态标志, 用于输入/输出
resetiosflags(f) 终止由参数f指定的状态标志 , 用于输入/输出

带有常用的状态标志的操纵符setiosflags和
resetiosflags
setiosflags(ios::left) 数据按域宽左对齐输出
setiosflags(ios::right) 数据按域宽右对齐输出
setiosflags(ios::fixed) 固定的小数位数显示
setiosflags(ios::scientific) 设置浮点数以科学表示法(即指数形式)显示
setiosflags(ios::showpos) 在正数前添加一个“+”号输出
setiosflags(ios::uppercase) 在以科学表示法格式E和以十六进制输出字母时用大写表示
resetiosflags(f) 终止已设置的状态标志,在括号中应指定f的内容

说明:
(1) 所有不带形参的操纵符都定义在头文件iostream.h中,而带形参的操纵符则定义在头文件iomanip.h中,因而使用相应的操纵符就必须包含相应的头文件。例如:
#include
#include
(2) 在进行输入输出时,操纵符被嵌入到输入或输出链中,用来控制输入输出的格式,而不是执行输入或输出操作。

#include<iostream>     //例9.8预定义的操纵符的使用方法举例。
#include<iomanip>
using namespace std;
int main() { cout<<setw(10)<<123<<567<<endl;   //①
cout<<123<<setiosflags(ios::scientific)
       <<setw(20) <<123.456789<<endl;  //②
cout<<123<<setw(10)<<hex<<123<<endl; //③
cout<<123<<setw(10)<<oct<<123<<endl;  //④
cout<<123<<setw(10)<<dec<<123<<endl; //⑤
cout<<resetiosflags(ios::scientific)<<setprecision(4)
      <<123.456789<<endl;  //⑥
cout<<setiosflags(ios::left)<<setfill('#')
       <<setw(8)<<123<<endl;//⑦
cout<<resetiosflags(ios::left)<<setfill('$')
       <<setw(8) <<456<<endl;  //⑧
return 0;}



在这里插入图片描述

使用用户自定义的操作符进行输入输出格式控制

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值