0

该程序将某些内容打印到文本文件中。当行数超过 30 时,我想擦除文本文件的内容,然后它应该再次开始在文本文件中打印。

void GPSCallback(const gps_common::GPSFix::ConstPtr& msg)
{
    std::ofstream output;
    output.open("file1.txt",std::ios_base::app);
    output<<"\n"<<msg->latitude<<","<<msg->longitude;
    output.close();
    usleep(10000000);
}
4

3 回答 3

1

可以在您调用的函数中使用类似以下的计数器GPSCallback

if(++count < 30)
    GPSCallback(msg);
 else{
   count =0;
   std::ofstream output;
   output.open("file1.txt");
   output.close();
   GPSCallback(msg);
 }
于 2013-09-06T11:03:21.770 回答
0

一旦达到 30 行的限制,就可以使用 seekp 将指针重置到文件的开头。这不会删除文件的内容,但会被覆盖。

于 2013-09-06T11:37:02.313 回答
0

尝试这个

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string name;
    int count=0;
    output.open("file1.txt",std::ios_base::app);
    if (output.is_open()) {
    while (!output.eof()) {

      getline(name); 
      count++;
   }
   }
   if(count>=30)
   {
     // do whatever you want
   }
   output.close();
}
于 2013-09-06T11:04:33.880 回答