我有一个 char 数组,一个巨大的数组 char p[n] 从 txt 中读取。
//1.txt 194.919 -241.808 234.896 195.569 -246.179 234.482 194.919 -241.808 234.896 ...
foo(char *p, 浮动 x, 浮动 y, 浮动 z) {
}
我尝试使用 atof、strtod,但是当数组太大时它们会非常耗时,因为它们会调用 strlen()。而且 sscanf 也很慢....
我调试了代码,发现 atof() 和 strtod 都调用了Visual Studio中的 strlen() ,我们可以查看 crt 代码。
strtod() call:
answer = _fltin2( &answerstruct, ptr, (int)strlen(ptr), 0, 0, _loc_update.GetLocaleT());
atof() call:
return( *(double *)&(_fltin2( &fltstruct, nptr, (int)strlen(nptr), 0, 0, _loc_update.GetLocaleT())->dval) );
我也尝试使用strtok,但我们不应该更改1.txt中的任何数据。
所以任何人都有将所有这些转换为浮点 x、y、z 的最佳方法。
视觉工作室 2008 + WIN7