要转换为双倍转换的字符串0

时间:2017-02-15 21:25:44

标签: c++ qt

我试图从二进制文件中读取双精度浮点数并将其分配给静态双变量。我已经尝试了很多方法,但无论方法是什么,转换的结果都是0.从文件中正确读取数字(作为一个字符数组),但是当我尝试转换它时会发生一些事情......包含的标题是:#include<字符串> #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 \0 on the last position since my array finishes with  \n
    mystring[strlen(mystring) - 1] = '\0';

   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);
}

1 个答案:

答案 0 :(得分:2)

如果小数点分隔符是逗号,则必须使用区域设置处理。

由于您使用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;
}