如何在QT中将带逗号的字符串转换为float?

时间:2016-02-01 13:45:43

标签: c++ qt csv qlocale

在我的csv文件中,decimalpoint是一个逗号。所以我可以在Excel中打开csv,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 个答案:

答案 0 :(得分:0)

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

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

请参阅qt的QLocale::toDouble()

文档