【发布时间】:2014-12-23 06:15:20
【问题描述】:
我应该读入一个具有固定长度记录和字段的数据文件,在内存中创建一个排序索引列表,然后将该列表保存到一个文件中。然后我将编写第二个程序,它以交互方式(通过 Linux 命令行)获取一个键和索引文件名,打开并加载索引文件,使用索引表搜索给定的键,然后打开并返回正确的数据记录。
原始文件包含一个记录列表,其中包含一个键 (int)、一个名称(最多 8 个字符的字符串)、一个代码 (int) 和一个成本 (double)。
RRN(相对记录号)从 1 开始,RRN 为 0 表示只有第一个条目中的大小的虚拟记录。
这是我将使用的数据文件。
8 blank 0 0.0
12345 Item06 45 14.2
12434 Item04 21 17.3
12382 Item09 62 41.37
34186 Item25 18 17.75
12165 Item16 30 7.69
16541 Item12 21 9.99
21212 Itme31 19 8.35
41742 Item14 55 12.36
应该在 Linux 的命令行中以下列方式执行:
search 12382 prog5.idx
prog5.idx 是创建的索引文件。
我写了一些代码,但到目前为止它所做的只是打开数据文件。
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ifstream data;
data.open("prog5.dat");
ofstream outFile("prog5.idx", ios::out);
//if file can't be opened, exit
if(!data) {
cerr << "Open Failure" << endl;
exit(1);
}
else {
cout << "File is open" << endl;
}
}
一旦我弄清楚文件打开后做什么,“文件已打开”部分将被替换,只需使用此消息来验证它是否正在打开文件。
我以前从未使用过这些类型的文件,所以不知道从哪里开始。
【问题讨论】:
-
是学校作业吗?可以使用 C++ 标准库中的容器吗?以防万一,您可以将
std:map与std:pair<int, Record>一起使用,其中Record是一个简单的struct,信息在一行中...... -
我相信是的,不过我对 C++ 库的经验是 0。