Я думаю, что сделал бы работу немного по-другому. Я бы создал небольшой класс sorta-proxy для обработки чтения значения и преобразования его в double:
class fixed_point {
double val;
public:
std::istream &read(std::istream &is) {
is >> val; val /= 100.0; return is;
}
operator double() { return val; }
friend std::istream &operator>>(std::istream &is, fixed_point &f) {
return f.read(is);
}
};
Используя это, я мог бы читать мои данные немного чище. Например:
std::vector<double> my_data;
std::copy(std::istream_iterator<fixed_point>(infile),
std::istream_iterator<fixed_point>(),
std::back_inserter(my_data));
Важным моментом здесь является то, что оператор >> не только читает необработанные данные, но и извлекает реальную информацию (в формате, который вы можете использовать) из этих необработанных данных.
Есть и другие способы сделать эту работу. Например, вы могли бы также создать производную от std :: num_get, которая анализирует удваивается от формата этого файла. Вероятно, это теоретически правильно, но документация для этой части библиотеки в основном довольно скудная, поэтому мне трудно посоветовать ее.