Разбор временных меток из файла данных и сохранение в векторе - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть несколько текстовых файлов с метками времени в формате гггг-мм-дд чч: нн: сс.Я создаю класс, и мне нужен конструктор, который принимает имя текстового файла и сохраняет время (а не даты) в векторе.Я попробовал следующий код, но мой компилятор жалуется, когда я пытаюсь создать объект этого типа (например, data test ("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 голосов
/ 24 декабря 2018

Мне любопытно, почему вы передаете поток файлов, когда в описании вы сказали, что хотите передать имя файла конструктору.Кроме того, вам даже нужно беспокоиться о типе тм?Вот более простое решение, которое, я думаю, соответствует требованиям:

#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();
}
...