Я получил массив 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, float x, float y, float z)
{
}
Я пытался использовать atof, strtod, но они занимают в реальном времени, когда массив слишком велик, потому что они будут вызывать strlen (). и sscanf тоже очень медленный ....
I отлаживает в коде и находит, что и atof (), и strtod вызывают strlen () в visual studio , мы можем проверить код 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.
Visual studio 2008 + WIN7