如何使用<fstream>类进行文件的I/O处理

摘要:传统的文件 I/O 库如 Unix 的 <io.h> 和 <stdio.h> ,由于其程序接口的原因,在很大程度上强制程序员进行某些处理,缺乏类型安全和国际化支持。C++ 的 <fstream> 库则在文件的 I/O 方面提供了一个增强的、面向对象的、具有国际化意识的库。本文将介绍如何使用这个库进行文件的 I/O 处理并利用它来编写易于跨平台的代码。

大多数 C++ 程序员都熟悉不止一个文件 I/O 库。首先是传统的 Unix 风格的库,它由一些低级函数如 read() 和 open()组成。其次是 ANSI C 的 <stdio.h> 库,它包含 fopen() 和 fread()等函数。其它的还有一些具备所有权的库或框架,比如 MFC,它有很多自己的文件处理类。

这些库一般都很难跨平台使用。更糟的是,上述提到的 C 库由于其程序接口的原因,在很大程度上强制程序员进行某些处理,而且缺乏类型安全支持。

标准 C++ 提供提供了一个增强的、面向对象的、具有国际化意识的 <fstream> 库。这个库包含一系列派生于标准 ios_base 和 ios 类的类模板。因此, <fstream> 提供了高级的自动控制机制和健壮性。本文下面将示范如何使用 <fstream> 类实现文件的输入/输出处理:

第一步:创建文件流

输入文件流(ifstream)支持重载的 >> 操作符,同样,输出文件流(ofstream)支持重载的 << 操作符。结合了输入和输出的文件流被称为 fstream。下面的程序创建了一个 ifstream 对象:dict,并将该对象中的每一个单字显示到屏幕上:

#include <iostream>
#include <string>
#include <fstream>
#include <cstdlib>
using namespace std;
int main()
{
  string s;
  cout<<"enter dictionary file: ";
  cin>>s;
  ifstream dict (s.c_str());
  if (!dictionary) // were there any errors on opening?
    exit(-1);
  while (dictionary >> s) cout << s <<''\n'';
}   

我们必须调用 string::c_str() 成员函数,因为 fstream 对象只接受常量字符串作为文件名。当你将文件名作为参数传递时,构造函数试图打开指定的文件。接着,我们用重载的 !操作符来检查文件的状态。如果出错,该操作符估值为 true。最后一行是个循环,每次反复都从文件读取一个单字,将它拷贝到 s,然后显示出来。注意我们不必显式地检查 EOF,因为重载操作符 >> 会自动处理。此外,我们不用显式地关闭此文件,因为析构函数会为我们做这件事情。

过时和荒废的 <fstream.h> 库支持 ios::nocreate 和 ios::noreplace 标志。但新的 <fstream> 库已经取代了 <fstream.h> 并不再支持这两个标志。

时间: 2024-10-26 19:18:10

如何使用&lt;fstream&gt;类进行文件的I/O处理的相关文章

CFile类打开文件的有趣现象

在编制对话框应用程序的过程中,我发现一个很有趣的现象,就是当使用CFile类的Open成员函数打开一个文件时,如果不指定文件的路径会默认为当前程序的路径,但如果使用了文件打开对话框CFileDialog类并打开了一个文件的话,则Open成员函数文件的默认路径会变成CFileDialog类打开文件的路径.下面详细说明如下: CFile::Open virtual BOOL Open(LPCTSTR lpszFileName,UINT nOpenFlags,CFileException* pErro

关于windows h-请教大神有什么书详细介绍像windows.h这类头文件包含的函数的具体用法的?

问题描述 请教大神有什么书详细介绍像windows.h这类头文件包含的函数的具体用法的? 请教大神有什么书详细介绍像windows.h这类头文件包含的函数的具体用法的? 我想系统的学一学这个头文件下的函数的具体用法,苦于找不到相关的书籍,求大神推荐啊 解决方案 WINDOWS核心编程 http://download.csdn.net/detail/huangxy10/5783907 Win32 API 参考手册 http://www.pudn.com/downloads118/ebook/det

分析-想找一个能对通讯类apk文件做组件安全检测的工具

问题描述 想找一个能对通讯类apk文件做组件安全检测的工具 我想找一个专业性比较强的检测工具,不要检测以后就写着"安全"的工具,想要有详细分析的那种.... 解决方案 如果是对移动应用软件做这个安全检查的话,那推荐你可以用爱内测(www.detect.cn).是针对目前移动应用行业可能出现的安全风险,提供全方位多维度的检测,并为移动应用开发商提供专业的安全加固数据依据 解决方案二: @all987 这会有详细分析的吗? 解决方案三: 有的,检测以后会有一个比较详细的检测报告下载

vs2013 文件操作为什么fstream没有绑定这个文件

问题描述 vs2013 文件操作为什么fstream没有绑定这个文件 //#define _CRT_SECURE_NO_DEPRECATE //#include<stdio.h> #include<vector> #include<iostream> #include<fstream> #include<string> #include<string.h> using namespace std; vector<int>

file.createnewfile()-File类创建文件的疑惑

问题描述 File类创建文件的疑惑 由file.createNewFile();创建的.xls文件,作为参数执行 Workbook wb = Workbook.getWorkbook(file) 时wb的值为null,求解 解决方案 file.createNewFile(); 创建新文件,不是新的xls文件,即便什么数据也没有,一个空的xls文件也不是0字节的空白文件,而是一个具有excel格式的文件.

ziparchive-PHP 采用zipArchive类压缩文件文件时出错?

问题描述 PHP 采用zipArchive类压缩文件文件时出错? <?php header("Content-type:text/html;charset=utf-8"); /** Created by PhpStorm. User: Administrator Date: 2015/9/1 Time: 10:24 */ $zip = new ZipArchive(); //首先实例化这个类 if ($zip->open('F:test.zip',ZIPARCHIVE::O

c# FileStream类读取文件

问题描述 c# FileStream类读取文件 FileStream aFile = File.OpenRead("Data.txt"); 为什么能创建对象? 解决方案 C# 读取txt文件 FileStream,StreamReader,StreamWriterc#FileStream文件读写C# FileStream文件读写 解决方案二: C# 读取txt文件 FileStream,StreamReader,StreamWriter c#FileStream文件读写 C# File

php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)_php技巧

本文实例讲述了php使用pclzip类实现文件压缩的方法.分享给大家供大家参考,具体如下: 使用PclZIp(zip格式)压缩,首先需要下载它的包文件(可点击此处本站下载).PclZip功能还是蛮强大的,它可以进行压缩和解压,以及一些添加和删除的类的方法等等.当然了这些内容我们都可以在网上查找的到,没必要都得记住.我们只要在需要使用的时候自己可以很快的在网上找到使用方法就可以了.首先我们需要的就是要将下载的库文件进行引入,如 <?php include('pclzip/pclzip.lib.ph

通过 C# 使用 J# 类库中的 Zip 类压缩文件和数据

数据|压缩 本文假设您熟悉 C# 和 Windows 窗体 下载本文的代码: ZipCompression.exe (150KB) 摘要 在存储文件或者通过网络发送文件时,使用 Zip 压缩可以节省空间和网络带宽.此外,还不会丢失经过 Zip 的文件夹的目录结构,这使其成为非常有用的压缩方案.C# 语言不具有任何使您可以操纵 Zip 文件的类,但是由于面向 .NET 的语言可以共享类实现,并且 J# 在 java.util.zip 命名空间中公开了类,因此您可以在 C# 代码中使用这些类.本文将