将文件内容存储到c ++中的变量中

时间:2014-12-02 02:48:29

标签: c++ file variables

我正在处理一个需要我根据文件内容创建哈希表的程序。该文件包含记录(每行1个),包括键(int),名称(字符串),代码(int)和成本(double)。我为大多数程序编写了代码来创建哈希表,但是,我在确定如何从文件中加载表时遇到了一些麻烦。更具体地说,如何将每条记录存储到其对应的变量中?

代码有点长,但如果您认为发布它有助于回答我的问题,请告诉我,我很乐意将其包括在内。

我确实觉得我应该包括这个,我有一个结构设置来保存我设置的每条记录中包含的信息如下:

struct record {
        int key;
        string name;
        int code;
        double cost;
}

如果您需要查看代码的任何其他部分或代码作为一个整体,请告诉我。

2 个答案:

答案 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;
}
相关问题