C ++从文件

时间:2017-08-22 01:38:04

标签: c++ arrays file storage

我有一个文本文件,其中包含一个简单的进入/退出系统的以下数据:

其中每一行都有{time_stamp} {name} {door_entry} {status}

time_stamp - 自任意开始时间以来的秒数

名称 - 工作人员用户名

door_entry - 进入/退出门号

状态 - 他们是进入还是离开门

文本文件很大,有大约10,000个与此类似的条目

问题:我想知道如何分解每一行并将每条信息拆分成一个变量。例如,我在这里有工人类:

class Worker
{
    std::string staffToken;
    int doorEntry;
    std::string status;
    public:
        Employee();
};

我也希望用数组解决这个问题。我知道我可以使用Vector或Map但我想用数组来解决这个问题。 我已经为Worker类创建了一个指针对象数组。

   typedef Worker * WorkPtr;
        WorkPtr * workers = new WorkPtr[MAX]; //where max is some large constant
        for (int i = 0; i < MAX; ++i)  
        {
        workers[i] = new Worker();
        }

我创建的这个问题的目标是我只想检查此文本文件中工作人员连续多次输入或退出的任何异常活动:

1 个答案:

答案 0 :(得分:0)

您可以使用此模板拆分具有特定分隔符的字符串

template<typename Out>
void split(const std::string &s, char delim, Out result) {
    std::stringstream ss;
    ss.str(s);
    std::string item;
    while (std::getline(ss, item, delim)) {
        *(result++) = item;
    }
}

std::vector<std::string> split(const std::string &s, char delim) {
    std::vector<std::string> elems;
    split(s, delim, std::back_inserter(elems));
    return elems;
}

例如:

ifstream fin("your_file");
while(getline(fin,str))
{
    vector<string> res;
    res = split(str, ' ');
    //your process with res
}