流是一种抽象的概念,可以将它理解为一条湍流不息的河流,作为传送数据的载体。数据能够存放的地方无非就是几个,从键盘刚刚输入的数据,内存的数据,磁盘文件的数据等等,这些数据互相的流向,让流这个概念产生。至此你应该懂了,他就是一个传输数据的载体。
输入输出流包含的函数特别多,例如 cin.getline() cin.get() 太多,只说cout,cin
1、c语言作为入门课程,算是首选,学过c的都知道,c的输出输入为printf和scanf,最大的优点是精确,你只要够细心,你的c语言代码可以算是最优秀的语言了。 2、但是并不是所有人都那么细心,对于这些人来说,精确就成了缺点,当你用%d,来输出超其精度或者字符串数字的时候,编译系统会认为是对的(为什么编译系统不能设置一下,能够识别出来呢?这就要讲组成原理了,最后讲一下吧,这里先不讲),而运行的时候就出错了,这样很麻烦。 3、c++一边保留了c的输入输出,另一边又出了自己的输入输出cin和cout,这种输入输出流使用起来就方便了许多,不需要制定自己输入输出的是什么类型的数据,直接在cin>>后面写上输入变量名或者cout<<后写输出变量名就可以了
这样的好处挺多,不会出现不报错的错误输入输出,所以是类型安全的。c++是面向对象的,因此该输入输出流能够将对象输出,面向对象算是一个优点。在其他章节可以知道,c++可以对符号重载,当然对于>>与<<也是可以重载的,因此可以随时改变其功能,可扩展性是一个优点。其实这些优势也就是c++的优势。
java的io流库非常的庞大,同样,c++的流库也是非常的强大,下面我介绍一下流库
iostream 输入输出流基类 istream 输出流基类 ostream 输出流基类
fstream 输入输出文件流类 ifstream 输入文件流类 ofstream 输出文件流类
文件流,主要操作的就是磁盘中的文件。从上面可以看出来,很多头文件可以使用,一般来说,头文件上使用这个也就差不多够用了
#include<fstream>文件打开的方式 ios::in 以输入方式打开文件 ios::out 以输出方式打开文件,若已有该文件,则清空该文件 ios::app 以输出方式打开文件,末尾添加 ios::ate 打开一个已有的文件,文件指针指向文件末尾 ios::trunc ios::binary 以二进制方式打开文件 ios::in|ios::out 以输入输出方式打开文件,文件可读可写 ios::out|ios::binary 以二进制方式打开一个输出文件 ios::in|ios::binary 以二进制方式打开一个输入文件
c++中这个不是分的特别清楚,java分的很清楚,我学过java,因此自己分一下方便记忆。 字符流文件也就是内容使用的是Unicode编码的文件,简单点说,用记事本打开,你能认出来,那这就是字符流文件了。而磁盘的存储方式确是以字节为基本单位的,所以字符流文件存储是先将文件转化为字节之后,才存入磁盘的。字符流文件处理的时候,中间总是有一个Unicode转化过程,速度也就会变得慢下来了。 这种文件的读取和写入,使用ofstream outfile(“文件名”,打开方式),一般打开方式不是binary就都可。
#include<fstream> using namespace std; int main(){ //文件内容输入 ostream outfile("我是文件.txt",ios::out); outfile<<"这是我要存入文件的内容"; //文件内容输出 ifstream infile("又是文件.txt",ios::in); //文件有很多字?那用个数组和循环吧 char a[100]; for(int i=0;i<100;i++){ infile>>a[i]; } return 0; }很多人发现,out居然是输入,in居然是输出,很难记忆,其实将主体当成内存就好了。当碰到字符流文件输入输出时,将主体当成内存,out从内存中输出数据,到达文件,in是从文件将数据,输入到内存,记着内存这个,也就将文件出与入记清了(上面的记法要是觉得乱,那就直接无视掉)
字节流文件从内存到磁盘文件是直来直往的,所以速度更加的快。当然二进制的打开方式需要使用Ios::binary。对文件的读和写,需要使用的是write和read方法
#include<fstream> using namespace std; int main(){ ofstream outfile("又是我.dat",ios::binary); outfile.write("你好你好,我又要进去了",10);//后面那个是前面字符串的长度 char *a; istream infile("又是我.dat",ios::binary); infile.read(a,sizeof(a)); return 0; }文件类指针打开用完,最后必须使用close()关闭
以上程序linux中vim编写的,ios_base改为ios就可以了