自从学了C++,对于C++中文件的输入与输出一直不是特别清楚,这两天大致看了一下,把学到的一些先记录一下吧,转换为自己的理解应该能学的更加深刻些,后面学到了再一点点补充。
标准的输入和输出
啥是标准的输入和输出呢?就是我们在刚学习C++时所用到的cin, cout啦,在这我就不详细说什么标准库里面定义的cin是istream的对象,cout是ostream的对象,主要按照我自己的理解来写:
#include<iostream>
using namespace std;
int main()
{
int a, b;
cin >> a >> b; //手动输入两个整型数据
int sum = a + b;
cout << sum << endl; //在黑框中显示sum的值
return 0;
}
emmm从上面这个简单的小程序看到,当我们碰到cin的时候呢,就相当于我们要手动的输入数据了,可以把这个cin理解成一个小的“容器”吧,我们输入的数据就从这个容器流向我们的变量了,而且流动的方向就是“>>”箭头所指向的方向,所以我们输入的第一个数据就流到了a里面,第二个数据就流到了b里面;接着进行加法运算得到的值放到sum,然后对sum进行输出,这个时候嘞,我们就可以把cout当成控制台的黑框框,sum沿着箭头的方向(<<)将数据流给了它,从而在控制台显示出来。。
文件的输入与输出怎么理解呢?
其实我们利用我们上面的理解来类比:
- 从文件中读取数据
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
ifstream in; //相当于cin
in.open("文件名.txt"); //将文件和in相关联
char ch;
in >> ch;
cout << ch;
in.close();
return 0;
}
我们完全可以把这个这个in当作cin使用,因为实际上这个文件的输入和输出都是从标准的输入输出继承过来的。不同的就是现在不需要我们手动输入数据了,直接从想读取的文件中获取。首先创建一个“容器”:in,然后打开我们想要读取的文件,可以理解为把文件里的内容都装入到容器中,从容器中流向所需要的变量,最后别忘记关闭这个容器哦!
所以我认为标准的输入和文件的输入差别就在于一个需要手动输入,而另外一个是已经写好了直接用就好了。下面再来看一看文件的输出:
- 向文件中写入
ofstream out;
out.open("文件名.txt"); //创建一个新文件
out << "想写入文件的内容";
out.close();
这里的out我们就可以类比cout了,如上面我们说的,cout当作控制台的黑框框,输出的内容会显示在上面,而现在的out和文件关联在一起,所以写入的内容都会保存在文件中了!
- 补充几种读取整个文件的方法
ifstream in;
in.open("文件名.txt");
//1、利用char(单个字符读取,每一个字符占一行)
char ch;
while(cin >> ch)
{
cout << ch << endl;
}
//2、利用string(单个字符串读取,每个字符串占一行)
string str;
while(cin >> str)
{
cout << str << endl;
}
//3、getline()整行读取
string str;
while(getline(in, str))
{
cout << str;
}
//4、用文件中数据进行对象初始化
while(!in.eof())
{
A obj; //A类定义了一个对象obj
int a, b; //假设类A有两个int类型的属性
in >> a >> b;
obj(a, b); //A的构造函数,就可以创建一个实例对象了
}
今天大致就写这一点吧,还有好多后面看到再慢慢补充,刚开始写博客,就先写一些最简单的,因为我就是按照我的理解写的,可能我的理解方面和实际有冲突,欢迎各位大佬指正啊!希望以后能够习惯将学到的记录下来,没事再翻一翻应该会有一些收获,继续加油吧!