Я работаю в приложении 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 ++, поэтому я не знаю, что не так с кодом.
Большое спасибо!
Конструктор по умолчанию для vector
генерирует пустой вектор. Это означает, что любой доступ к элементу, даже элементу [0]
, приведет к неопределенному поведению.
Обычный способ справиться с этим — работать с временной переменной, а затем использовать push_back
поместить временное в вектор.
struct tm temp;
strptime("20020202", "%Y%m%d", &temp);
tmTM.push_back(temp);