从数据文件中解析时间戳并存储在矢量中

时间:2018-12-24 14:52:34

标签: c++ parsing timestamp stdvector

我有一些带有时间戳的文本文件,格式为yyyy-mm-dd hh:nn:ss。 我正在创建一个类,我想要一个构造函数,该构造函数采用文本文件的名称并将时间(而不是日期)保存在向量中。我尝试了以下代码,但是当我尝试创建这种类型的对象时(例如,数据测试(“ file.txt”)),编译器会抱怨。

class data {
  vector<tm> timevec;
public:
  data (ifstream& in) {
  tm tt;
  while (in>>get_time(&tt,"%H:%M:%S"));
  timevec.push_back(tt);
}};

我确定上面的代码中有几个问题,但是请放心。我是C ++的新手。 如上所述,当我尝试创建这种类型的对象时,我的编译器会抱怨-它表示对于传递的参数没有已知的转换。

1 个答案:

答案 0 :(得分:0)

我很好奇为什么在描述中要传递文件名给构造函数时,为什么要传递文件流。另外,您是否还需要打扰tm类型?我认为这是一个符合要求的简单解决方案:

#include <memory>
#include <string>
#include <vector>
#include <iostream>
#include <fstream>

using namespace std;

class TimeData
{
 public:
    explicit TimeData(const string& filePath)
    {
        ifstream inFile(filePath);

        if (!inFile.is_open())
            exit(0);

        string date(""), time("");

        while (inFile >> date >> time)
        {
            times.push_back(time);
        }                       
    }

    void Print()
    {
        for (const auto& time : times)
            cout << time << endl;
    }

private:
    vector<string> times;
};

int main()
{
    unique_ptr<TimeData> td = make_unique<TimeData>("file.txt");
    td->Print();
    getchar();
}