Как я могу заставить strptime работать над вектором struct tm в c ++?

Я работаю в приложении C ++, которое читает файл CSV и хранит содержимое в матрице значений типа double и в векторе struct tm. У меня есть что-то похожее на это:

#include <iostream>
#include <time.h>
#include <vector>

using namespace std;

int main(){
vector<struct tm> tmTM;
strptime("20020202", "%Y%m%d", &tmTM[0]);
cout << tmTM[0].tm_year << endl;
cout << tmTM[0].tm_mday << endl;
cout << tmTM[0].tm_mon << endl;
return 0;
}

К сожалению, этот код генерирует ошибку Ошибка сегментации (дамп памяти)
Я новичок в C ++, поэтому я не знаю, что не так с кодом.
Большое спасибо!

-1

Решение

Конструктор по умолчанию для vector генерирует пустой вектор. Это означает, что любой доступ к элементу, даже элементу [0], приведет к неопределенному поведению.

Обычный способ справиться с этим — работать с временной переменной, а затем использовать push_back поместить временное в вектор.

struct tm temp;
strptime("20020202", "%Y%m%d", &temp);
tmTM.push_back(temp);
1

Другие решения


По вопросам рекламы [email protected]