gpt4 book ai didi

c++ - 字符串到双转换始终为 0

转载 作者:行者123 更新时间:2023-11-30 03:34:12 24 4
gpt4 key购买 nike

我正在尝试从二进制文件中读取 double float 并将其分配给静态 double 变量。我尝试了多种方法,但是无论使用哪种方法,转换的结果都是 0。从文件中正确读取了数字(作为字符数组),但是当我尝试转换它时发生了一些事情......包含的标题是:#include #include #include

该方法的代码片段如下:

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 对象并设置使用逗号的区域设置(我只采用了一个有效的区域,它并不特定于您的情况)。

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

关于c++ - 字符串到双转换始终为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42260352/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com