转自于:http://www.vckbase.com/document/viewdoc/?id=1355
文件I/O库很多,如传统的unix中的read(),open();ANSI C的<stdio.h>,fopen,fread()等;MFC有自己的文件处理类。但是很多I/O库很难跨平台使用。
C++中提供了<fstream>,该库提供了高级的自动控制机制。其具体使用方法如下。
1、创建文件流
输入文件流ifstream支持重载的>>操作符,输出文件流ofstream支持重载的<<操作符。下面的程序创建一个ifstream对象 file,并将该对象中的每一个单字显示在屏幕上:
#include<iostream>
#include<string>
#include<fstream>
#include<cstdlib>
using namespace std;
int main()
{
string s;
cout<<"enter file name:";
cin>>s;
ifstream f(s.c_str());
if(!f) exit(-1);
while(f>>s)
cout<<s<<"\n";
}
fstream对象只接受常量字符串作为文件名。我们不必显示检查EOF,因为重载操作符>>会自动处理。我们也不必显示关闭此文件,因为西沟函数会为我们做这件事。
关于文件的打开模式
如果不显示指定打开模式,fstream类将使用默认值,即ifstream默认以读方式打开文件并将文件指针置为文件的开头。ofstream则默认以写方式打开文件并将文件指针置为文件开头。
<fstream>定义的打开模式和文件属性:
ios::app //从后面添加
ios::ate //打开并找到文件尾
ios::binary //二进制模式打开
ios::in //只读打开
ios::out //写打开
ios::trunc //将文件截为0长度
可使用模式的组合。
如:fstream logfile("Database.dat",ios::in|ios::out);
2、设置文件的位置
可以调用seekp()函数,将文件指针指向该文件的某个偏移位置,该函数以字节为单位。tellp()可以报告新位置。
另可以用下面的常量重新定位文件。
ios::beg
ios::cur
ios::end
3、读写数据
如:fstream logfile("log.dat");
logfile<<teim(0)<<"danny"<<"\n";
logfile.seekp(ios::beg);
logfile>>login>>user;
分享到:
相关推荐
本文将详细介绍如何使用 `<fstream>` 库进行文件的 I/O 处理,并利用它来编写易于跨平台的代码。 #### 传统文件 I/O 库的问题 大多数 C++ 程序员都熟悉多种文件 I/O 库。首先是传统的 Unix 风格的库,它由一些低级...
传统的文件 I/O 库如 Unix 的 <io.h> 和 <stdio.h> ,由于其程序接口的原因,在很大程度上...C++ 的 <fstream> 库则在文件的 I/O 方面提供了一个增强的、面向对象的、具有国际化意识的库。 希望本例对大家有所帮助!
- `<fstream>`:提供文件输入输出流的功能。 - `<iomanip>`:包含格式化输入输出的工具。 - `<ios>`:定义基本的输入输出流类和控制符。 - `<iosfwd>`:声明部分流类的前置声明,用于减少包含其他头文件的开销。 - `...
### fstream 的常用用法详解 #### 一、概述 `<fstream>` 是 C++ 标准库...尽管 `<fstream>` 在某些特定情况下可能不如 `<stdio.h>` 那样高效,但对于大多数日常编程任务而言,`<fstream>` 已经足够强大并且易于使用。
* <fstream>:支持文件的流输入输出。 * <iosfwd>:为输入输出对象提供向前的声明。 * <streambuf>:支持流输入和输出的缓存。 * <cstdio>:为标准流提供 C 样式的输入和输出。 * <cwchar>:支持多字节字符的 C...
#include <fstream> using namespace std; void main(){ ofstream in; in.open("com.txt",ios::trunc); // ios::trunc 表示在打开文件前将文件清空 int i; char a='a'; for(i=1;i<=26;i++){ if(i<10){ in<<...
3. **C++标准库更新**:在C++的发展中,一些C风格的头文件被C++标准库中的新头文件所取代,如`<fstream.h>`替换为`<fstream>`,`<iostream.h>`替换为`<iostream>`,`<strstrea.h>`不再支持,现在使用`<sstream>`中的...
`<fstream.h>`和`<iostream.h>`是C++中的头文件,它们涉及到文件输入输出和数据流操作,C++使用`<fstream>`和`<iostream>`替代了C中的`stdio.h`。`<iomanip.h>`提供了设置输出格式的工具,比如对齐、填充等。`...
wbuffer>、<cvt-wstring>、<cwchar>、<cwctype>、<deque>、<exception>、<filesystem>、<forward_list>、<fstream>等,每一个都定义了一组类、模板、函数或类型别名,用于不同的编程需求。比如<array>提供固定大小...
此外,C++标准库还包括了基本类型转换(如`<charconv>`)、容器(如`<deque>`、`<forward_list>`、`<map>`、`<set>`、`<stack>`、`<queue>`、`<unordered_map>`、`<unordered_set>`等)、迭代器、智能指针(如`...
`<fstream.h>`处理文件输入输出;`<iomanip.h>`提供了格式化输入输出;`<iostream.h>`是C++中的IO流库;`<limits.h>`定义了各种数据类型的最小和最大值;`<locale.h>`支持本地化功能;`<math.h>`提供了数学函数,如...
- `<fstream>`:提供了文件输入输出流对象,如`ifstream`和`ofstream`。 - `<sstream>`:提供了字符串流对象,如`istringstream`和`ostringstream`。 - `<iomanip>`:提供了格式化输入输出的操作符。 2. **数学...
纯C++标准库实现,仅用到了<fstream><map><list><string>,这些标准库,没有在Linux下测试过。(简易实现,代码部分仅6K,全采用string类型) /* .ini 文件 解析器【只能读取】 Section和Key只能为字母、数字、...
ofstream, ifstream, 和 fstream 是C++标准库中的三个核心文件流类,它们属于 `<fstream>` 头文件,用于实现对磁盘文件的读写操作。这三个类是IO流库的一部分,它们提供了方便的接口来处理输入/输出操作。 ofstream...
4. `<cerrno>`、`<clocale>`、`<cmath>`、`<complex>`、`<cstdio>`、`<cstdlib>`、`<cstring>`、`<ctime>`:分别对应C库中的错误码、本地化、复数、输入/输出、数学、通用输入/输出、内存管理和时间处理。...
- `<iostream>`和`<fstream>`等标准库头文件经常用到`#include`预处理器指令来引入。 - `<cassert>`:包含断言宏`assert`,用于调试。 - `<cstdio>`(或旧版的`<stdio.h>`):包含C风格的I/O函数,如`printf`和`...
在C++11及更高版本中,应使用`<fstream>`。 6. `<iomanip.h>`:提供了一组操纵符,如`setw()`, `setprecision()`,用于控制流的格式。 7. `<iostream.h>`:包含输入/输出流的基本类,如`cin`, `cout`, `cerr`等。 ...
- `<fstream.h>`:旧式的C++文件I/O头文件,现代C++中使用`<fstream>`替代。 - `<iomanip.h>`:提供参数化的I/O操作,如设置宽度、精度等。 - `<iostream.h>`:包含基本的数据流输入/输出,如`cin`和`cout`。 - ...
- `<cerrno>`:错误码,与`<cerr>`结合使用。 - `<cfloat>`:浮点数常量,与`<float.h>`类似。 - `<ciso646>`:C++中的异构操作符等价词。 - `<climits>`:C++的整型限制,类似于`<limits.h>`。 - `<clocale>`...
本文将详细介绍两种常用的方法来判断文件或文件夹的存在性:一是使用`<fstream>`库中的流对象方法,二是通过C语言提供的`access`函数。 #### 方法一:使用`<fstream>`库中的流对象方法 这种方法适用于C++,其基本...