例如,将文件
thisFile
复制到文件
thatFile
,如以下示例所示:
ifstream fromFile("thisFile");
if (!fromFile)
error("unable to open ’thisFile’ for input");
ofstream toFile ("thatFile");
if (!toFile)
error("unable to open ’thatFile’ for output");
char c;
while (toFile && fromFile.get(c)) toFile.put(c);
使用
ios::in
的缺省模式创建名为
fromFile
的
ifstream
对象,并将其连接到
thisFile
。然后打开
thisFile
。
enum open_mode {binary=0, in=1, out=2, ate=4, app=8, trunc=0x10,
nocreate=0x20, noreplace=0x40};
注 –
UNIX 中不需要
binary
标志,提供该标志是为了与需要它的系统兼容。可移植代码在打开二进制文件时要使用
binary
标志。
您可以打开文件同时用于输入和输出。例如,以下代码打开了文件
someName
用于输入和输出,同时将其连接到
fstream
变量
inoutFile
。
如果通过向
fstream
构造函数之一提供文件名或使用
open
函数来打开文件,则在销毁
fstream
(通过
delete
销毁或其超出作用域)时,会自动关闭该文件。将文件
attach
到
fstream
时,不会自动关闭该文件。
下面是另一种文件复制(前面讨论过)方法,这里为了清晰起见省略了错误检查:
该词有两个含义,一个特定于
iostream
软件包,另一个较常适用于输入和输出。
与
iostream
库特定相关时,缓冲区是由类
streambuf
定义的类型的对象。
通常,缓冲区是一个内存块,用于将字符高效传输到输出的输入。对于已缓冲的 I/O,缓冲区已满或被强制刷新之前,字符的实际传输会延迟。
无缓冲的缓冲区是指在其中没有上文定义的通用意义的缓冲区的
streambuf
。本章避免使用缓冲区一词来指
streambuf
。但是,手册页和其他 C++ 文档使用缓冲区一词来表示
streambuf
。