У меня возникают проблемы при попытке прочитать число с плавающей точкой из файла. Мне нужно прочитать 3 числа с плавающей точкой, приведенные в следующей строке:
v -30.50889491515995 -31.95820181187489 0
(Я делаю парсер из файла .obj с Rhinoceros)
Вот мой код (перед этим я читаю строку, чтобы увидеть, является ли 'v'):
fstream f(name.c_str());
...
f>>p.x>>p.y>>p.z;
name - строка, прочитанная ранее из стандартного ввода.
P является структурой:
typedef struct Point{
double x;
double y;
double z;
}Point;
Проблема в том, что прочитанные данные:
-30,5089 -31,9582 0
вместо
-30.50889491515995 -31.95820181187489 0
Он округляется до 4 десятичных знаков, и я не хочу этого!
Я пытался читать с помощью fscanf, но не могу отправить ему объект fstream. Примерно так:
fscanf(f,"%f %f %f",p.x,p.y,p.z);
Я тоже пробовал это, но это не сработало:
f>>setprecision(10)>>fixed>>p.x>>p.y>>p.z;
Есть идеи, как этого избежать? Мне нужно больше точности в координатах вершины!
Большое спасибо.