字符串到双转换为0

String to double conversion allways 0

本文关键字:转换 字符串      更新时间:2023-10-16

我正在尝试从二进制文件中读取双精度浮点数,并将其分配给静态双重变量。我尝试了许多方法,但是转换的结果不管方法是什么。:#包括<字符串>#include<sstream> #include<stdlib.h>

该方法的代码片段被给出了:

FILE * pFile;
char mystring [100];
double v;
string temp;
QString t_string;
pFile = fopen ("path_to_binary_file","r");
if (pFile != NULL)
{
   if ( fgets (mystring , 100 , pFile) != NULL )
    {
     //I am putting a  on the last position since my array finishes with  n
    mystring[strlen(mystring) - 1] = '';
   temp.assign(mystring, mystring + 12);
   t_string = QString::fromStdString(temp);
  //  std::istringstream s(temp);
   // s >> sheethConstant;
    v = t_string.toDouble();//atof(mystring);
    static_variable = v;
   }
fclose (pFile);
}

如果小数分离器是逗号,则必须使用语言环境处理。

由于您正在使用QT,可以设置QLocale对象并设置使用逗号的语言环境(我只采用一个有效的方法,这不是您的情况)。

#include <QDebug>
#include <QLocale>
int main(int argc, char *argv[]) {
  QString t_string("0,04019173434");
  QLocale locale(QLocale::Catalan);
  double number = locale.toDouble(t_string);
  qDebug() << "String is" << t_string << ", number is " << number;
  return 0;
}