【问题标题】:How to convert a string with comma to float in QT?如何将带逗号的字符串转换为QT中的浮点数?
【发布时间】:2016-02-03 16:21:05
【问题描述】:

在我的 csv 文件值中,小数点是逗号。所以我可以在 Excel 中打开 csv,而 Excel 不会格式化我的值。

当我在自己的软件中打开文件并将字符串转换为浮点数时,无法读取值: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
}

【问题讨论】:

  • 请确保DataFromRow.at(i) 不包含空格或其他分隔符。您可以尝试下一个:DataFromRow.at(i).trimmed().toFloat().

标签: c++ qt csv qlocale


【解决方案1】:

您为流设置了语言环境,这可能不起作用,因为我认为语言环境不会转移到 QStringList 对象 DataFromRow 的元素。您必须为它们设置语言环境。但是,我更喜欢使用以下内容:

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

查看qt的QLocale::toDouble()文档

【讨论】:

  • 谢谢!这就是我一直在寻找的。当我保存文件时,我必须将语言环境设置为流,因此值将以逗号显示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-01
  • 2020-04-21
相关资源
最近更新 更多