Как преобразовать строку с запятой, чтобы плавать в QT?

В моем CSV-файле значения десятичной запятой это запятая. Так что я могу открыть CSV в Excel и Excel не будет форматировать мои значения на сегодняшний день.

Когда я открываю файл в моем собственном программном обеспечении и конвертирую String в float, значения не могут быть прочитаны: bool ok возвращает false.

QTextStream stream(&file);
QLocale locale = QLocale();
qDebug() << locale.decimalPoint(); //returns ","
stream.setLocale(locale);

QString LineFromFile = stream.readLine();
QStringList DataFromRow = LineFromFile.split(";");

QList<float> values;
for (int i = 0; i < ValuesCnt; ++i){
   values.append(DataFromRow.at(i).toFloat());
   qDebug() << DataFromRow.at(i) << values.at(i);   //returns e.g.: "700,1" 0
}

1 ответ

Вы устанавливаете локаль для потока, это предположительно не работает, потому что я не думаю, что локаль передается элементу объекта QStringList DataFromRow. Вы должны установить язык для них. Тем не менее, я бы предпочел использовать следующее:

for (int i = 0; i < ValuesCnt; ++i){
  values.append(locale.toFloat( DataFromRow.at(i)));

Смотрите документацию Qt о QLocale:: toDouble ()

Другие вопросы по тегам