C++ c++;多次工作后,stof()函数出错

C++ c++;多次工作后,stof()函数出错,c++,function,std,C++,Function,Std,我已经编写了一个函数来读取obj。文件,并将字符串转换为浮点数。代码工作正常,直到stof()函数停止正常工作。我不确定这部分是怎么突然停止工作的,因为它似乎是一件很简单的事情,而且一直到现在它都在工作 ftemp = std::stof(stemp); ftemp和stemp(float和string的存储)在我的函数开始时声明,并覆盖每个数字。我使用fstream和迭代器来查找数字。代码的其余部分很容易想象,并按预期工作,因此除了失败部分之外,我将介绍所有内容 这在.obj文件中,应表示纹

我已经编写了一个函数来读取obj。文件,并将字符串转换为浮点数。代码工作正常,直到stof()函数停止正常工作。我不确定这部分是怎么突然停止工作的,因为它似乎是一件很简单的事情,而且一直到现在它都在工作

ftemp = std::stof(stemp);
ftemp和stemp(float和string的存储)在我的函数开始时声明,并覆盖每个数字。我使用fstream和迭代器来查找数字。代码的其余部分很容易想象,并按预期工作,因此除了失败部分之外,我将介绍所有内容

这在.obj文件中,应表示纹理平面

# Blender v2.68 (sub 0) OBJ File: ''
# www.blender.org
v -1.000000 1.000000 -1.000000
v 1.000000 1.000000 -1.000000
v -1.000000 1.000000 1.000000
v 1.000000 1.000000 1.000000
vt 0.000100 0.000100
vt 0.999900 0.000100
vt 0.000100 0.999900
vt 0.999900 0.999900
s off
f 2/1 1/2 4/3
f 1/2 3/4 4/3
它在读取vt线路时失败。因此,当stemp保持“0.000100”时,ftemp应保持0.000100,但它保持:9.999997E-005。其余部分的工作方式相同,并且正确地执行

任何帮助都将不胜感激。

这是正确的。对于
float
实现的单精度,可保证精度高达约7位有效数字


9.999999 7E-005
0.000009999999 7
所以它足够近了。

有一个轻微的数学错误,我加了一个0太少了。我代码中的错误在其他地方。谢谢你的帮助。