2017-02-15 2 views
1

Я пытаюсь прочитать число с плавающей точкой двойной точности из двоичного файла и назначить его статической двойной переменной. Я пробовал множество методов, однако результат преобразования, независимо от метода, равен 0. Число правильно считывается из файла (в виде массива символов), однако что-то происходит, когда я пытаюсь его преобразовать ... Включенные заголовки # включают < строку> # включить < sstream> #include < stdlib.h>Строка для двойного преобразования allways 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); 
} 
+0

Какова ценность QString? – Jepessen

+1

'std :: stod (" 1234.56 ")'. – Chad

+0

Вы также должны включать в себя заголовок Qt, а также те, которые указаны. – Steve

ответ

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; 
} 
+0

Спасибо вам большое! Ваша идея сделала трюк. –

+0

Приятно это знать. Для дальнейшего использования, пожалуйста, укажите запятую в своем вопросе и не только в комментарии. – Jepessen

Смежные вопросы