C++高级编程内容:文件和流、异常处理、动态内存、命名空间、模板、预处理器、信号处理、多线程、Web编程等。
C++标准库:点击打开链接
std:: 是个名称空间标示符,C++标准库中的函数或者对象都是在命名空间std中定义的,所以我们要使用标准函数库中的函数或对象都要使用std来限定。
对象cout是标准函数库所提供的对象,而标准库在名字空间中被指定为std,所以在使用cout的时候要加上std::。这样编译器就会明白我们调用的cout是名字空间std中的cout。
一、文件和流
1、i/o stream输入输出流
iostream库是一个面向对象的库,提供了输入和输出功能,使用流。
流是一个抽象的概念,表示在输入和输出设备进行操作。流基本上可以表示为不定长度字符的源或目的地。
流通常与字符的物理源或目的地相关,如磁盘文件、键盘或控制台,因此从我们的抽象中获得或写入的字符称为流,物理上是对物理设备的输入/输出。
上面<ios>/<istream>/<iostream>/<fstream>/<sstream>均表示库
里面是基类和派生类及对象。
关系:ios_base->ios->istream/ostream->iostream
ios_base:Base class for streams(基类流)
标准输入/输出库中流类的整个层次结构的基类,它描述流的最基本部分,它与所有流对象都是通用的,独立于它们的字符类型。
它没有公共构造函数,因此不能声明这个类的对象。
ios_base及其派生类basic_ios定义流不取决于流是一个输入或输出流的成分:
ios_base描述独立于模板参数的成员(即字符类型和特点),而basic_ios描述,取决于他们的成员。
cin、cout标准输入流、输出流对象。可视的即从键盘中输入和窗口显示均可看见。
2、文件流
继承关系
#include <fstream>
ofstream //该数据类型表示输出文件流,用于创建文件并向文件写入信息。
ifstream //该数据类型表示输入文件流,用于从文件读取信息。
fstream //该数据类型通常表示文件流,且同时具有 ofstream 和 ifstream 两种功能,这意味着它可以创建文件,向文件写入信息,从文件读取信息。
要在 C++ 中进行文件处理,必须在 C++ 源代码文件中包含头文件 <iostream> 和 <fstream>。
2、打开文件
open() 函数是 fstream、ifstream 和 ofstream 对象的一个成员。
在从文件读取信息或者向文件写入信息之前,必须先打开文件。
ofstream 和 fstream 对象都可以用来打开文件进行写操作,如果只需要打开文件进行读操作,则使用 ifstream 对象。
void open(const char *filename, ios::openmode mode);open() 成员函数的第一参数指定要打开的文件的名称和位置,第二个参数定义文件被打开的模式。
成员函数
构造文件流 (公开成员函数) | |
(析构函数)
[虚]
(隐式声明)
| 析构 basic_fstream 和关联的缓冲区,并关闭文件 (虚公开成员函数) |
(C++11)
| 移动文件流 (公开成员函数) |
(C++11)
| 交换二个文件流 (公开成员函数) |
返回底层未处理的文件设备对象 (公开成员函数) | |
文件操作 | |
检查流是否有关联文件 (公开成员函数) | |
打开文件,并将它与流关联 (公开成员函数) | |
关闭关联文件 (公开成员函数) |
非成员函数
(C++11)
| 特化 std::swap 算法 (函数模板) |
关闭函数:
close() 函数是 fstream、ifstream 和 ofstream 对象的一个成员。
写入文件:
在 C++ 编程中,我们使用流插入运算符( << )向文件写入信息,就像使用该运算符输出信息到屏幕上一样。唯一不同的是,在这里使用的是 ofstream 或 fstream 对象,而不是 cout 对象。
读取文件:
在 C++ 编程中,我们使用流提取运算符( >> )向文件写入信息,就像使用该运算符从键盘输入信息一样。唯一不同的是,在这里使用的是 ofstream 或 fstream 对象,而不是 cin 对象。
示例:
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
int main()
{
char data[100];//缓存文件中的内容
string filename = "tt.txt";
ofstream out;
out.open(filename, ios::app | ios::ate);
cin.getline(data, 100);//getline()函数从外部读取一行.
out << data << endl;//从键盘上输入内容到文件中
out.close();
//读取文件内容并显示
ifstream infile;
infile.open(filename);
while (!infile.eof())//如果读文件到达文件末尾,返回true。
{
infile >>data ;
cout << data << endl;
}
system("pause");
return 0;
}
参考:
http://www.runoob.com/cplusplus/cpp-files-streams.html
http://www.cplusplus.com/reference/fstream/fstream/open/
http://zh.cppreference.com/w/cpp/io/basic_fstrea。