Как преобразовать строку с запятой, чтобы плавать в 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()

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]