C++:IO库

首先,C++不直接处理输入输出,而是通过定义在标注库中的类型来进行处理这些IO,分别为:

1,iostream处理控制台的IO

2,fstream处理命名文件的的IO

3,stringstream完成内存string中的IO

IO库的处理比较简单,没有什么特别难的地方,这里就简单地提出一些要点,供大家阅读和我自己平常使用的作为参考。

1,IO作为函数参数或者返回值使用的时候一般用&引用进行传递,最主要的原因是不用&作为传递,参数会发生实参给形参进行拷贝操作,IO对象不能进行拷贝操作,一般使用以下形式,person是一个表示身高体重的类,打印一个人(wwh)的身高体重。

void print(ostream& out, person man)
{
	out << "hello" << endl;
	out << "man.hight" << "cm" << endl;
	out << "man.weight" << "kg" << endl;
}

int main()
{
    print(cout, wwh);
    return 0;
}

2,对于空格和回车的理解,回车相当于将输入(cin)缓冲区中的字符全部输入到变量中。

3,从别的地方看到的getline()的理解。

#include <string> 
#include <iostream>
using namespace std;

int main()
{
	char a;
	int b;
	float c;
	string str;
	cin>>a>>b>>c>>str;
	cout<<a<<" "<<b<<" "<<c<<" "<<str<<endl;

	string test;
	getline(cin,test);//不阻塞
	cout<<"test:"<<test<<endl;
	system("pause");
	return 0;
}

从键盘输入:[回车][回车][回车]a[回车]5[回车]2.33[回车]hello[回车],输出结果是:

è¿éåå¾çæè¿°

从结果可以看出,cin>>对缓冲区中的第一个换行符视而不见,采取的措施是忽略清除,继续阻塞等待缓冲区有效数据的到来。但是,getline()读取数据时,并非像cin>>那样忽略第一个换行符,getline()发现cin的缓冲区中有一个残留的换行符,不阻塞请求键盘输入,直接读取,送入目标字符串后,再将换行符替换为空字符’\0’,因此程序中的test为空串。原文来自:https://blog.csdn.net/k346k346/article/details/48213811 

4,养成文件IO操作的良好习惯。

ifstream inf(filename);
if(inf)        //判断是否打开文件
{
          //文件输入流的操作
}
else
{
    cout << "can't open " << filename << endl;
}

5,C++ primer 289页告诉我聚合类(就是我们C语言说的结构体struct)不能进行类内初始化。

我是too cold,我们下次再见。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值