在写代码的过程中.我们最常做的事就是io操作,不管是对控制台,还是文件.但一段时间不写代码就忘了,这里理一下C++标准I/O库的详细类和操作. C++的标准I/O库包含我们常常使用的iostream,fstream.以及不太常常使用的stringstream.前两者是对控制台和文件的I/O操作,stringstream则能够使用I/O操作对内存中的数据进行格式化操作. C++的标准I/O操作相对与C来说,更加的简明,安全,但运行效率会有所下降. 标准I/O库类继承体系              …
文章转自:https://www.cnblogs.com/kingcat/archive/2012/05/09/2491847.html 自己在学习中,对此原文的基础之上进行补充. 什么是缓冲区 缓冲区又称为缓存,它是内存空间的一部分.也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区. 缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区. 为什么要引入缓冲区 比如我们从磁盘里取信息,我们先把读出的数据放在缓冲区,计算…
函数汇总: open().write().read().close() fopen().fwrite().fread().fclose() 一.什么是文件 在讲述文件操作之前,我们首先要知道什么是文件.看到这个问题你可能会感觉到可笑,因为对于用过计算机的人来说,文件是最简单不过的概念了,例如一个文本是一个文件,一个work文档是一个文件等.但是在Linux中,文件的概念还远不止于这些,在Linux中,一切(或几乎一切)都是文件.文件包括很多的内容,例如:大家知道的普通文件是文件,目录也是一个文件…
http://www.cocoachina.com/bbs/read.php?tid-282490.html Xcode6.1标准Framework静态库制作方法.工程转Framework,静态库加xib和图片.完美解决方案.       在cocoachina呆挺长时间了.没什么大贡献.就整理了这个,希望对大家有帮助.绝对原创.呵呵. 1.创建一个工程,或者在原有的工程上进行.不在列举.2.在原有工程上添加一个静态库 2.1.选择OS X 的Bundle.因为Xcode6.1中iOS里没有Bu…
一.总结 文件I/O一章讲了不带缓冲的I/O,本章讲的是带缓冲的I/O.不带缓冲针对的是内核的系统调用,而带缓冲针对的是用户空间的标准库函数,是基于带缓冲的I/O实现的.不带缓冲的I/O通过文件描述符的方式来引用一个文件,而带缓冲的I/O则通过文件流(stream)的方式来引用文件.至于为什么要用流的方式,原因就是带缓冲区,这样文件的读写就要经过缓冲区做缓冲,就像水流一样. 引入标准IO库的目的是为了提高IO的效率,避免频繁的进行read/write系统调用,而系统调用会消耗较多的资源.因此标准…
标准I/O库提供缓冲的目的是尽可能减少使用read和write调用的次数.它也对每个I/O流自动地进行缓冲管理,从而避免了应用程序需要考虑这一点所带来的麻烦. 标准I/O提供了三种类型的缓冲: (1)全缓冲.这种情况下,在填满标准I/O缓冲区后才进行实际的I/O操作.对于驻留在磁盘上的文件通常是由标准I/O库实施全缓冲的.在一个流上执行第一次I/O操作时,相关标准I/O函数通常调用malloc获得需使用的缓冲区. 术语冲洗(flush)说明标准I/O缓冲区的写操作.缓冲区可由标准I/O例程自动冲…
对于标准I/O库,它们的操作是围绕流(stream)进行的.当用标准I/O库打开或创建一个文件时,我们已使一个流与一个文件相关联. 对于ASCII字符集,一个字符用一个字节表示.对于国际字符集,一个字符可以用多个字节表示.标准I/O文件流可用于单字节或多字节(“宽”)字符集.流的定向(stream’s orientation)决定了所读.写的字符是单字节还是多字节.当一个流最初被创建时,它并没有定向.如若在未定向的流上使用一个多字节I/O函数(见<wchar.h>),则将该流的定向设置为宽定向…
ISO C标准I/O库提供了两个函数以帮助创建临时文件. #include <stdio.h> char *tmpnam( char *ptr ); 返回值:指向唯一路径名的指针 FILE *tmpfile( void ); 返回值:若成功则返回文件指针,若出错则返回NULL 若ptr是NULL,则所产生的路径名存放在一个静态区中,指向该静态区的指针作为函数值返回.下一次调用tmpnam时,会重写该静态区(这意味着,如果我们调用此函数多次,而且想保存路径名,则我们应该保存该路径名的副本,而不是…
程序清单5-1 用getc和putc将标准输入复制到标准输出 #include "apue.h" int main( void ) { int c; while(( c = getc( stdin )) != EOF ) if( putc( c, stdout ) == EOF ) err_sys( "output error" ); if( ferror( stdin )) err_sys( "input error" ); exit( );…
一旦打开了流,则可在三种不同类型的非格式化I/O中进行选择,对其进行读.写操作: (1)每次一个字符的I/O.一次读或写一个字符,如果流是带缓冲的,则标准I/O会处理所有缓冲. (2)每次一行的I/O.如果想要一次读或写一行,则使用fgets和fputs.每行都以一个换行符终止.当调用fgets时,应说明能处理的最大行长. (3)直接I/O.fread和fwrite函数支持这种类型的I/O.每次I/O操作读或写某种数量的对象,而每个对象具有指定的长度.这两个函数常用于从二进制文件中每次读或写一个…