【发布时间】:2017-08-22 01:38:04
【问题描述】:
我有一个文本文件,其中包含用于简单进入/退出系统的以下数据:
每行都有 {time_stamp} {name} {door_entry} {status}
time_stamp - 自某个任意开始时间以来的秒数
name - 工人用户名
door_entry - 进入/退出的门号
状态 - 他们是进门还是出门
文本文件很大,大约有10,000个类似的条目
问题:我想知道如何分解每一行并将每条信息分成一个变量。例如,我在这里有 Worker 类:
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();
}
我创建这个问题的目的是,我只想检查此文本文件中是否有任何异常活动,其中 Worker 连续多次进入或退出:
【问题讨论】:
-
这里有很多关于在 C++ 中解析文本的问题。您在哪个特定部分遇到问题?您还没有提出任何问题(您已就您想做的事情发表了声明)。
-
离题:您可能在这里过度使用指针。您创建一个指向
Worker的指针数组,然后用默认构造的Workers 填充指针数组。使用Worker workers[MAX];和没有for循环,您可以通过显着减少开销和手动内存管理获得相同的结果。