c++/oop---输入输出流

#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <iomanip>
#include <string>
using namespace std;
int main(){
	int a=100;
	cout<<a<<endl;
	cout<<hex<<a<<endl;
	cout<<oct<<a<<endl;
	cout<<dec<<a<<endl;
	string s1,s2;
	cin>>setw(4)>>s1>>setw(3)>>s2;
	cout<<s1<<','<<s2<<endl;
	cout<<setw(4)<<a<<endl;
	cout<<setw(10)<<a<<endl;//前补空格 
	cout<<setw(3)<<a<<endl;//<=3 不改变 
	return 0;
}

c++/oop---输入输出流

istream 是用于输入的流类, cin 就是该类的对象。ostream 是用于输出的流类, cout 就是该类的对象。ifstream 是用于从文件读取数据的类。ofstream 是用于向文件写入数据的类。iostream 是既能用于输入,又能用于输出的类。fstream 是既能从文件读取数据,又能向文件写入数据的类。 

iostream

 输入流对象:cin 对应于标准输入流,用于从键盘读取数据,也可以被重定向为从文件中读取数据。输出流对象:cout 对应于标准输出流,用于向屏幕输出数据也可以被重定向为向文件写入数据。cerr 与标准错误输出设备相连clog 与标准错误输出设备相连cerr clog 的区别在于 cerr 不使用缓冲区, 直接向显示器输出信
息;而输出到
clog 中的信息先会被存放在缓冲区, 缓冲区满或者刷
新时才输出到屏幕。
 

流操纵算子

#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <iomanip>
#include <string>
using namespace std;
int main(){
	int a=100;
	cout<<a<<endl;
	cout<<hex<<a<<endl;
	cout<<oct<<a<<endl;
	cout<<dec<<a<<endl;
	string s1,s2;
	cin>>setw(4)>>s1>>setw(3)>>s2;
	cout<<s1<<','<<s2<<endl;
	cout<<setw(4)<<a<<endl;
	cout<<setw(10)<<a<<endl;//前补空格 
	cout<<setw(3)<<a<<endl;//<=3 不改变 
	return 0;
}

cin的高级用法

判断文件输入结束

while(cin>>n)

cin对象可以被强制类型转换为 bool 型 

如果文件结束则会返回false

如果输入的类型不符合也会返回false

EOF: end of file 整形常量,值为-1

cin.get() 读入一个字符,返回其ASCII码 (或者EOF)

cout.put(97) 输出一个字符 'a'

查看代码
cout.put(97);
	while((c=cin.get())!=EOF){
		cout.put(c);
	}

cin.getline()

#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
int main(){
// istream & getline (char * buf,int bufSize)
// istream & getlien (char * buf,int bufSize,char delim)

	char s1[104],s2[104];
	bool result=cin.getline(s1,10);
	cout<<s1<<endl;
	cout<<result<<endl;//result = 0 program end 
	cin.clear();// 
	cin.getline(s2,100,' ');
	cout<<s2<<endl;
	return 0;
}
/*
intpu
1234567890
_ 

output
123456789

0
\n
\n 
*/

第一个版本读入到'\n' 停下,或者读入到bufSize-1个字符

第二个版本读到delim字符停下,或者读入bufSize-1个字符

如果'\n'或delim之前就有超过bufSize-1个字符,那么就会返回0,并且接下来无法正常读入

使用cin.clear()可以清除错误标记,继续读入,但是上一次超出未被读进来的部分这次会被读进来

 ignore

istream & ignore (int n=1,int delim=EOF)

忽略前n个字符或者delim之前的字符

cin.ignore(5);

peek

cin.peek() 观察流的下一个字符但不读入

不会跳过空格和回车

可以用来处理不同的输入格式

precision, setprecision
precision 是成员函数,其调用方式为:
cout.precision(5);
setprecision 是流操作算子,其调用方式为:
cout << setprecision(5);
它们的功能相同。
指定输出浮点数的有效位数(非定点方式输出时)
指定输出浮点数的小数点后的有效位数(定点方式输出时)
定点方式:小数点必须出现在个位数后面

int main(){
	double pi=3.1415926;
	cout.precision(4);
	cout<<pi<<endl;//3.142
	cout<<setprecision(6)<<pi<<endl;//3.14159
	
	double pp=13.1415926;
	cout.precision(4);
	cout<<pp<<endl;//13.14
	cout<<setprecision(6)<<pp<<endl;//13.1416
	
	
	return 0;
}
#include <iostream>
2 #include <iomanip>
3 using namespace std;
4 int main() {
5 double x = 1234567.89,y = 12.34567;
6 int n = 1234567;
7 int m = 12;
8 cout << setiosflags(ios::fixed)
9 << setprecision(6) << x << endl
10 << y << endl << n << endl << m;
11 }

设置定点

setiosflags(ios::fixed)

吐槽:为什么不直接printf!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值