私はchar配列を取得しました。これは、次のようなtxtから読み取られた巨大な配列charp[n]です。
//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も非常に遅いです。
コードをデバッグすると、atof()とstrtodの両方がビジュアルスタジオで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のデータを変更しないでください。
したがって、これらすべてをfloat x、y、zに変換する最良の方法は誰にでもあります。
Visual Studio 2008 + WIN7