Как читать в дабл из файла на с ++ - PullRequest
2 голосов
/ 11 апреля 2010

Как вы читаете в двойном из файла в C ++?

Для целых я знаю, что вы можете использовать getline (), а затем atoi, но я не нахожу массив для удвоения функции. Что доступно для чтения в double или преобразования массива char в double?

Ответы [ 4 ]

3 голосов
/ 11 апреля 2010

Не рассматривайте возможность использования atof () или любой из функций ato .., так как они не позволяют диагностировать ошибки. Взгляните на strtod и strtol . Или используйте операторы извлечения потока.

3 голосов
/ 11 апреля 2010

Вы можете использовать извлечение потока:

std::ifstream ifs(...);
double d;
ifs >> d;

Эта работа при условии, что, кроме пробелов, следующие данные в потоке должны иметь двойное текстовое представление.

После извлечения вы можете проверить состояние потока, чтобы увидеть, были ли ошибки:

ifs >> d;
if (!ifs)
{
    // the double extraction failed
}
2 голосов
/ 11 апреля 2010

Мне интересно, нужно ли быть осторожным с настройками локали (например, в локали можно использовать запятую вместо точки для разделения десятичной части) или в строковых потоках всегда по умолчанию используется стандартная нотация языка C?

0 голосов
/ 11 апреля 2010

Вы можете использовать istringstream Например, вот toDouble and toInt:

double toDouble(string s) {
  double r = 0;
  istringstream ss(s);
  ss >> r;
  return r;
}

int toInt(string s) {
  int r=0;
  istringstream ss(s);
  ss >> r;
  return r;
}
...