LINUX.ORG.RU

История изменений

Исправление stevejobs, (текущая версия) :

#include <QCoreApplication>

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string>
using namespace std;

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    string str1 =" -18.6622 342.5735 ";
    string str2 = " -18,6622 342,5735 ";

    long double f;
    long double ff;

    sscanf(str1.c_str(),"%Lf %Lf",&f, &ff); //не верно
    std::cout << f << std::endl << ff << std::endl;

    sscanf(str2.c_str(),"%Lf %Lf",&f, &ff); //верно
    std::cout << f << std::endl << ff << std::endl;

    fgetchar();
}

странность вероятно в том, что на выходе будет:

-18.6622
342.5735
-18 
342,5735

(второй раз отрезало дробную часть)

UPD: если забить на дробную часть, то всё работает отлично. Т.е. там, где у ТСа написано «не верно» у меня всё ОК

Исходная версия stevejobs, :

#include <QCoreApplication>

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string>
using namespace std;

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    string str1 =" -18.6622 342.5735 ";
    string str2 = " -18,6622 342,5735 ";

    long double f;
    long double ff;

    sscanf(str1.c_str(),"%Lf %Lf",&f, &ff); //не верно
    std::cout << f << std::endl << ff << std::endl;

    sscanf(str2.c_str(),"%Lf %Lf",&f, &ff); //верно
    std::cout << f << std::endl << ff << std::endl;

    fgetchar();
}

странность вероятно в том, что на выходе будет:

-18.6622
342.5735
-18 
342,5735

(второй раз отрезало дробную часть)