数据流控制文件(自己理解的,求大神指点)
2017-12-05 20:55
127 查看
自己理解的:
输入和输出的数据的类在C++里都是由ios这个类派生出来的。
ios 分别派生出istream和ostream,istream又派生出ifstream,而ostream派生出oftream,最重要的的,istream和ostream他们两一起派生出了iostream ,iostream 又派生出fstream.
istream 是用于输入的流类,cin就是该类的对象,
ostream 是用于输出的流类,cout就是该类的对象,
ifstream是用于从文件中读取数据的类,(对象可以自己定)
ostream 是用于向文件中输入数据的类,(对象可以自己定)
iostream是既能输入的类,又能输出的类;
fstream是既能从文件中读取数据,又能向文件中写入数据的类。
bool eof 能判读输入流是否结束。
数据流分是不是二进制数据的读入和写出
关键字时 out in app binary
out in 分别时普通的数据流的读和写的关键字
app 是文件的追加
binary 是文件以二进制的数据流的读和写的操作
文件是一种保存数据的一种工具,在C++中有一种文件的指针,可以直接在文件中修改数据,所以文件的运用有两种方法,一种是作为储存数据的工具,只有保存数据的功能,而处理数据的功能交给程序解决,第二种的方法是将文件做为数据的储存和处理的数据的工具,但是第二种的方法有一弊端,就是程序的代码比较第一种的代码量较多,而且在访问硬盘时候浪费了大量的运行时间,所以第二种方法的效率不高。
在程序中文件的操作和功能只应该是保存程序的数据,便于下一次程序的使用,不应该把文件当作内存空间来用,如果把文件当成运行内存空间来用的话,不光程序的代码多增减编程的工作量,而且在直接用文件中的指针修改数据的时候,每一次都要访问硬盘,不仅要浪费大量的程序计算的时间,而且对硬盘的的寿命也有影响。所以,这种行为是吃力不讨好的,文件的用处,最好是当作一个能不会随着程序死亡而消失的保存数据的工具
二进制数据的读和写的代码:
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
ofstream sr("zxt.txt",ios::binary);
cout<<"请输入一个数";
int x;
cin>>x;
sr.write((const char *)(&x),sizeof(int));
sr.close();
ifstream sc("zxt.txt",ios::binary);
int y;
sc.read((char *)&y,sizeof(int));
sc.close();
cout<<y<<endl;
return 0;
}
不是二进制数据的读和写的代码:
#include<fstream>
#include<iostream>
using namespace std;
int main()
{
int a[5];
ofstream sc("zhuxiatong.txt",ios::out);
cout<<"请输入五个数字";
int i;
for(i=0;i<5;i++)
{
cin>>a[i];
sc<<a[i]<<" ";
}
sc.close();
ifstream sr("zhuxiatong.txt",ios::in);
int b[5];
for(i=0;i<5;i++)
{
sr>>b[i];
cout<<b[i]<<" ";
}
sr.close();
return 0;
} by 朱夏彤
输入和输出的数据的类在C++里都是由ios这个类派生出来的。
ios 分别派生出istream和ostream,istream又派生出ifstream,而ostream派生出oftream,最重要的的,istream和ostream他们两一起派生出了iostream ,iostream 又派生出fstream.
istream 是用于输入的流类,cin就是该类的对象,
ostream 是用于输出的流类,cout就是该类的对象,
ifstream是用于从文件中读取数据的类,(对象可以自己定)
ostream 是用于向文件中输入数据的类,(对象可以自己定)
iostream是既能输入的类,又能输出的类;
fstream是既能从文件中读取数据,又能向文件中写入数据的类。
bool eof 能判读输入流是否结束。
数据流分是不是二进制数据的读入和写出
关键字时 out in app binary
out in 分别时普通的数据流的读和写的关键字
app 是文件的追加
binary 是文件以二进制的数据流的读和写的操作
文件是一种保存数据的一种工具,在C++中有一种文件的指针,可以直接在文件中修改数据,所以文件的运用有两种方法,一种是作为储存数据的工具,只有保存数据的功能,而处理数据的功能交给程序解决,第二种的方法是将文件做为数据的储存和处理的数据的工具,但是第二种的方法有一弊端,就是程序的代码比较第一种的代码量较多,而且在访问硬盘时候浪费了大量的运行时间,所以第二种方法的效率不高。
在程序中文件的操作和功能只应该是保存程序的数据,便于下一次程序的使用,不应该把文件当作内存空间来用,如果把文件当成运行内存空间来用的话,不光程序的代码多增减编程的工作量,而且在直接用文件中的指针修改数据的时候,每一次都要访问硬盘,不仅要浪费大量的程序计算的时间,而且对硬盘的的寿命也有影响。所以,这种行为是吃力不讨好的,文件的用处,最好是当作一个能不会随着程序死亡而消失的保存数据的工具
二进制数据的读和写的代码:
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
ofstream sr("zxt.txt",ios::binary);
cout<<"请输入一个数";
int x;
cin>>x;
sr.write((const char *)(&x),sizeof(int));
sr.close();
ifstream sc("zxt.txt",ios::binary);
int y;
sc.read((char *)&y,sizeof(int));
sc.close();
cout<<y<<endl;
return 0;
}
不是二进制数据的读和写的代码:
#include<fstream>
#include<iostream>
using namespace std;
int main()
{
int a[5];
ofstream sc("zhuxiatong.txt",ios::out);
cout<<"请输入五个数字";
int i;
for(i=0;i<5;i++)
{
cin>>a[i];
sc<<a[i]<<" ";
}
sc.close();
ifstream sr("zhuxiatong.txt",ios::in);
int b[5];
for(i=0;i<5;i++)
{
sr>>b[i];
cout<<b[i]<<" ";
}
sr.close();
return 0;
} by 朱夏彤
相关文章推荐
- java执行过程(自己的理解,希望大神指点)
- 买糖果 fzu 2116(自己基础不牢固,谢谢大神的指点)
- float到底是咋回事,看张鑫旭大神文章后自己的理解
- 自己封装了一个EF的上下文类.,分享一下,顺便求大神指点
- 刚学了链表的生成,遍历,释放,自己将链表的定义给自我解释了一下,也将老师的模板给注释了一下,不知道自己理解的是否正确,求大神指教
- 验证哥德巴赫猜想(好难啊,感觉自己写的有点啰嗦,求大神指点!!!)
- Traffic-Control-HOWTO翻译与TC部分自己的理解
- 自己理解的java.util.ArrayList(二)实现类
- ++i和i++ (自己的理解)
- 自己对static和reference理解不透彻造成使用linkedlist.add错误
- 关于C++虚函数自己的理解
- 自己封装的PCM写成WAV文件 欢迎指点
- 理解Linux环境变量及配置文件执行顺序 博客分类: Linux 每个用户都有自己专属的运行环境,这个环境是由一组变量所定义,这些变量称之为环境变量。用户可以修改环境变量以满足自己的要求。
- QtChart官方自带example(Callout)X轴坐标逆序后遇到的问题,求大神指点
- linq to xml操作XML,这是转的大神的,自己学习了,也希望你们也能学习一下
- 自己对保护模式下的描述符的理解
- MyBatis自己的理解
- 原来自己对连接字符串中Min Pool Size的理解是错误的
- ucosII 关于事件控制块,信号量,邮箱,消息队列,自己的理解。
- ucos,软件定时器。自己理解