0

文字列から double への変換には atof を使用しました。プログラムは csv ファイルから 1 文字列ずつ eof に達するまで読み取ります。特定の文字列でのみアクセス違反の問題が発生し、それ以前の文字列には問題がありません。何が問題なのですか?エラーは、TestOpenCV_CameraCalibration.exe の 0x778515de で未処理の例外です: 0xC0000005: アクセス違反の読み取り場所 0x406e64b1。それはatofで起こりました。以下にプログラムを添付します

 while (!myReadFile.eof()) 
       {
           //myReadFile>>cstr;
           getline ( myReadFile, cstr, ',' );
           //removedString = RemoveChars(cstr, removedchar);
           const char * c = cstr.c_str();
           //cout << k << "\n";
           if(k == 1200)
               k = k;
           temp[j++][k] = atof(c);
           if(i < 3)
           {
               if((j = j % 2) == 0) 
                   k++;
           }
           else
           {
               if((j = j % 3) == 0) 
                   k++;
           }
       }
4

1 に答える 1

0

strtod の使用を検討する

値を double に読み取ります

endptr を char ptr と比較します。それらが同じ場合は、カウンターをインクリメントしないでください。

于 2013-02-22T03:44:17.500 に答える