使用atof将字符串转换为double时的访问冲突

时间:2013-02-22 03:25:37

标签: c++ access-violation

我使用atof将字符串转换为double。程序从csv文件中读取一个字符串一个字符串,直到达到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++;
           }
       }

1 个答案:

答案 0 :(得分:0)

考虑使用strtod

将值读入双重

将endptr与您的char ptr进行比较。如果它们相同,请不要增加计数器。