承接上一讲。
2.7文件I/O
关于读写文件,C++中有一个专门的头文件
。
首先是读文件示例,如下:
/*************************************************************************
> File Name: list1301_file.cpp
> Author: suool
> Mail: 1020935219@qq.com
> Created Time: 2014年05月22日 星期四 22时15分11秒
************************************************************************/
#include
#include
#include
#include
using namespace std; int main() { ifstream in ("list1301.txt"); if (not in ) { perror("list1301.txt"); } else { string x; while(in >> x) { cout << x << endl; } in.close(); } return 0; }
文件内容:

读操作结果:
<??http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PC9wPgo8cD7Iu7rzysfQtM7EvP6jrMq+wP3I58/Co7o8L3A+CjxwPjwvcD4KPHByZSBjbGFzcz0="brush:java;">/************************************************************************* > File Name: list1302_write.cpp > Author: suool > Mail: 1020935219@qq.com > Created Time: 2014年05月24日 星期六 12时24分23秒 > Aim at:Copying Integers from a Named File to a Named File ************************************************************************/ #include
#include
#include
using namespace std; int main() { // Read data from file in ifstream in("data.txt"); if (not in) perror("data.txt"); // 文件不存在 else { ofstream out("out.txt"); // Write the data to out if (not out) perror("out.txt"); // 文件不存在 else { int x(0); while (in >> x) out << x << '\n'; out.close(); in.close(); // 关闭文件流 } } return 0; }
文件内容如下:

运行结果:
不过上面的读写文件存在一定的问题,就是程序没有检查输出操作是否成功执行,下面的程序的改造就是带有最小错误检查的示例:
/*************************************************************************
> File Name: list1302_write_check.cpp
> Author: suool
> Mail: 1020935219@qq.com
> Created Time: 2014年05月24日 星期六 12时58分50秒
************************************************************************/
#include
#include
#include
#include
using namespace std; int main() { // read data from in ifstream in("data.txt"); if(not in) perror("data.txt"); else { ofstream out("out.txt"); if(not out) perror("out.txt"); else { int x(0); while(in >> x) out << x<< endl; out.close(); if(not out) { perror("ou.txt"); } } } return 0; }
就是这一部分:

2.8数据结构――映射
前面我们已经介绍并学习了C++的一个特有的数据结构――向量,现在我要介绍另外一个C++的特有数据结构――映射,其他的高级语言成称之为字典等,其实都一样就是键值对的映射罢了。其中键是唯一的,值不限。
下面是一个示例:
/*************************************************************************
> File Name: list1401_data.cpp
> Author: suool
> Mail: 1020935219@qq.com
> Created Time: 2014年05月24日 星期六 13时17分39秒
************************************************************************/
// 读取单词并统计出现的次数
#include
#include
#include
#include
#include
#include
#include
数据文件依然上面那个,结果如下:
下面一个示例是利用迭代器循环格式化输出映射内容:
/*************************************************************************
> File Name: list1401_data_compat.cpp
> Author: suool
> Mail: 1020935219@qq.com
> Created Time: 2014年05月24日 星期六 14时58分34秒
************************************************************************/
#include
#include
#include
#include
文件内容:
运行结果:

下面一个例子是搜索映射中的指定键:
/*************************************************************************
> File Name: list1401_data_serach.cpp
> Author: suool
> Mail: 1020935219@qq.com
> Created Time: 2014年05月24日 星期六 15时17分30秒
************************************************************************/
#include
#include
#include
#include
#include
#include
文件内容:
运行结果:
未完待续。。。。。。。。。