strings.cc 700 Bytes
// See www.openfst.org for extensive documentation on this weighted
// finite-state transducer library.

#include <cmath>
#include <string>

#include <fst/flags.h>
#include <fst/extensions/far/compile-strings.h>
#include <fstream>

DEFINE_string(far_field_separator, "\t",
              "Set of characters used as a separator between printed fields");

namespace fst {

// Computes the minimal length required to encode each line number as a decimal
// number.
int KeySize(const char *filename) {
  std::ifstream istrm(filename);
  istrm.seekg(0);
  string s;
  int nline = 0;
  while (getline(istrm, s)) ++nline;
  istrm.seekg(0);
  return nline ? ceil(log10(nline + 1)) : 1;
}

}  // namespace fst