我试图从二进制文件中读取双精度浮点数并将其分配给静态双变量。我已经尝试了很多方法,但无论方法是什么,转换的结果都是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);
}
答案 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;
}