strptime不会产生确定性结果

时间:2017-02-11 14:06:11

标签: c++ file-io strptime

我有以下功能,它将csv文件读入一个类。

int Class::loadFromFile(std::string filename){

  /** read file **/
  std::string line;
  std::ifstream file (filename);

  if( !(file.is_open()) ){
    FILE_LOG(logWARNING) << "File " << filename << " could not be opened.";
  }

  /** fields: datetime, value **/
  while( getline(file,line) )
    {
      std::vector<std::string> sline = split(line,',');

      // sline[0] is timestamp
      time_t timestamp;
      std::tm _timestamp;
      strptime(sline[0].c_str(),"%Y-%m-%d%n%T",&_timestamp);
      timestamp = mktime(&_timestamp);

      // sline[1] is value
      unsigned int value = stoi(sline[1]);

      std::cout << sline[0].c_str() << std::endl; // is always the same
      std::cout << timestamp << std::endl; // sometimes differs by 1 hour ONLY FOR THE FIRST LINE

      this->add(timestamp,value);
    }

  return 0;

 }

如代码中所述,输出

std::cout << timestamp << std::endl;

我的csv文件中的第一行在我的程序的每次单独调用中并不总是相同,但有时它只相差一小时。

这似乎很奇怪,这只发生在csv文件的第一行,而且每次调用程序时所有其他行的解释都完全相同。

有人知道为什么会这样吗?

0 个答案:

没有答案