我正在处理一个需要我根据文件内容创建哈希表的程序。该文件包含记录(每行1个),包括键(int),名称(字符串),代码(int)和成本(double)。我为大多数程序编写了代码来创建哈希表,但是,我在确定如何从文件中加载表时遇到了一些麻烦。更具体地说,如何将每条记录存储到其对应的变量中?
代码有点长,但如果您认为发布它有助于回答我的问题,请告诉我,我很乐意将其包括在内。
我确实觉得我应该包括这个,我有一个结构设置来保存我设置的每条记录中包含的信息如下:
struct record {
int key;
string name;
int code;
double cost;
}
如果您需要查看代码的任何其他部分或代码作为一个整体,请告诉我。
答案 0 :(得分:2)
你可以试试这个:
while(_fstream >> key && _fstream >> name && _fstream >> code && _fstream >> cost)
{
record r;
r.key = key;
r.name = name; // and so on
// now you may do whatever you want to with your r object
}
_fstream
是您打开的输入文件流。
正如@Red Alert所提到的,这将是一个更优雅的解决方案:
while(_fstream >> key >> name >> code >> cost)
因为_fstream >> key
会返回_fstream
本身;
答案 1 :(得分:0)
如果数据文件的行中有以空格分隔的项目,则可以使用以下代码:
#include <iostream>
#include <fstream>
using namespace std;
typedef struct record {
int key;
string name;
int code;
double cost;
} rec;
int main()
{
ifstream f ("data.txt");
rec r;
f >> r.key;
while (!f.eof())
{
f >> r.name;
f >> r.code;
f >> r.cost;
cout << "new record, key=" << r.key
<< ", name=" << r.name
<< ", code=" << r.code
<< ", cost=" << r.cost << "\n";
f >> r.key;
}
//will also be done by destructor: f.close();
return 0;
}