view c/utils.cpp @ 398:3399bd48cb40

Ajout d'une méthode pour obtenir le nombre de FPS Méthode de capture des trames vidéos plus résistante aux erreur Utilisation d'un dictionnaire pour les fichier de configuration afin de garder le nom des sections
author Jean-Philippe Jodoin <jpjodoin@gmail.com>
date Mon, 29 Jul 2013 13:46:07 -0400
parents bc4ea09b1743
children c389fae9689a
line wrap: on
line source

#include "utils.hpp"

#include <boost/foreach.hpp>

#include <iostream>
#include <fstream>
#include <sstream>

using namespace std;

std::vector<std::vector<float> > loadNumbers(const string& filename, const string& separator /* = " " */) {
  ifstream in(filename.c_str());
  std::vector<std::vector<float> > result;

  if (::openCheck(in, filename, "loadNumbers")) {  
    while (!in.eof()) {
      string line = ::getlineComment(in);
      std::vector<string> tokens;
      ::split(tokens, line, separator);
      std::vector<float> numbers;
      BOOST_FOREACH(string s, tokens)
	numbers.push_back(::toFloat(s));
      if (!numbers.empty())
	result.push_back(numbers);
    }
  }

  return result;
}

int toInt(const std::string& s) { int i; fromString(i, s); return i;} //atoi

float toFloat(const std::string& s) { float x; fromString(x, s); return x;}// lexical_cast<float>(s)

double toDouble(const std::string& s) { double x; fromString(x, s); return x;}

string getlineComment(ifstream& f) {
  string s;
  getline(f, s);
  while ((!f.eof()) && (s[0] == ::commentChar)) {
    getline(f, s);
  }
  
  if (s[0] == ::commentChar)
    s.clear();
  return s;
}

void openWriteScientificPrecision(ofstream& out, const string& filename, const int& precision) {
  ::openWritePrecision(out, filename, precision);
  out.setf(ios::scientific);
}

void openWritePrecision(ofstream& out, const string& filename, const int& precision) {
  out.open(filename.c_str(), ios::binary);
  ::openCheck(out, filename, "openWritePrecision");
  out.precision(precision);
}

bool openCheck(ifstream& f, const string& filename, const string& callingFunctionName) {
  if (!f.is_open()) {
    cerr << "Pb opening file " << filename << " in " << callingFunctionName << endl;
    return false;
  } else
    return true;
}

bool openCheck(ofstream& f, const string& filename, const string& callingFunctionName) {
  if (!f.is_open()) {
    cerr << "Pb opening file " << filename << " in " << callingFunctionName << endl;
    return false;
  } else
    return true;
}