Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 字符串到双精度转换始终为0_C++_Qt - Fatal编程技术网

C++ 字符串到双精度转换始终为0

C++ 字符串到双精度转换始终为0,c++,qt,C++,Qt,我试图从二进制文件中读取双精度浮点数,并将其分配给静态双变量。我已经尝试了许多方法,但是转换的结果是0,而不管使用哪种方法。数字是从文件中正确读取的(作为一个字符数组),但是当我尝试转换它时会发生一些事情。。。包含的标题为:#包含#包含#包含 该方法的代码段如下所示: FILE * pFile; char mystring [100]; double v; string temp; QString t_string; pFile = fopen ("path_to_binary_file","r

我试图从二进制文件中读取双精度浮点数,并将其分配给静态双变量。我已经尝试了许多方法,但是转换的结果是0,而不管使用哪种方法。数字是从文件中正确读取的(作为一个字符数组),但是当我尝试转换它时会发生一些事情。。。包含的标题为:#包含#包含#包含

该方法的代码段如下所示:

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

如果十进制分隔符是逗号,则必须使用区域设置进行处理

由于您使用的是Qt,因此可以设置
QLocale
对象并设置使用逗号的区域设置(我只选择了一个有效的区域设置,它并不特定于您的情况)

#包括
#包括
int main(int argc,char*argv[]){
QString t_字符串(“004019173434”);
QLocale语言环境(QLocale::Catalan);
double number=locale.toDouble(t_字符串);

qDebug()QString的值是多少?
std::stod(“1234.56”)
。您还必须包括一些Qt头以及上面提到的那些。我还包括了QString,我还尝试了std::stod和strtod。文件中的值是004019173434
004019173434
除非您设置了适当的
区域设置,否则将无法转换,我相信我不知道如何使用
进行转换>QString
。很高兴知道这一点。为了将来的参考,请在问题中指定逗号,而不仅仅是在注释中。
#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;
}