c++的哪个函数可以读取txt文件中的数字,并且进行运算啊?就算是下面的数据,或者是相应的txt格式下的数据

2025-04-06 17:10:40
推荐回答(1个)
回答1:

/*这是我以前写的  以字符串形式读进来 二进制写出去*/ 
int write(char* srcFilename, char* destFilename)
{
 FILE *fpSrc;
 FILE *fpDest;
 fopen_s(&fpSrc, srcFilename, "rb");
 fopen_s(&fpDest, destFilename, "wb");
 if (fpSrc == NULL)
 {
  return 0;
 }
 fseek(fpSrc, 0, SEEK_END);
 int size = ftell(fpSrc);
 char* buffer = new char[size + 1];

 fseek(fpSrc, 0, SEEK_SET);
 int readsize = fread(buffer, sizeof(char), size, fpSrc);
 if (readsize > size)
 {
  return 0;
 }
 buffer[readsize ] = '\0';
 fclose(fpSrc);
 vector datalist;
 std::string  str_buff = buffer;

 delete buffer;
 buffer = NULL;
 int start_pos = 0;
 int end_pos = str_buff.find_first_of('\n', start_pos);
 start_pos = end_pos + 1;
 while (end_pos != -1)
 {
  end_pos = str_buff.find_first_of('\n', start_pos);
  if (end_pos != -1)
  {
   std::string tmp = str_buff.substr(start_pos, end_pos - start_pos);
   start_pos = end_pos + 1;
   PathData data;
   float tmp00 = 0;
   int tmp01 = 0;
   sscanf_s(tmp.c_str(), "(%d,%d,%f,%d)", &data.x, &data.y, &tmp00, &tmp01);/*这里是格式化读入 要注意自己的文本格式要互相匹配*/
   data.x *= 1280 / 1600.0;
   data.y *= 720 / 900.0;
   data.angle = tmp00 * 100;
   datalist.push_back(data);
  }
 }
 int count = datalist.size();
 fwrite(&count, sizeof(int), 1, fpDest);
 for (int i = 0; i < datalist.size(); i++)
 {
  fwrite(&datalist[i], sizeof(PathData), 1, fpDest);
 }
 fclose(fpDest);
 return 0;
}