如何在c++中使strptime在structtm的向量上工作

how can I make strptime work on a vector of struct tm in c++?

本文关键字:向量 structtm 工作 strptime c++ 中使      更新时间:2023-10-16

我在一个c++应用程序中工作,该应用程序读取csv文件并将内容存储在doubles矩阵和structtm向量中

#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);