c++中fstream用法实例

用来读取txt文档中的指定信息,比如txt中的文档内容如下:

#INSPVAXA,COM3,0,54.0,FINESTEERING,2060,199947.720,02008000,471d,14970;INS_SOLUTION_GOOD,INS_RTKFIXED,30.48279810362,114.16884102924,32.9221,-15.0000,-0.0016,-0.0011,0.0004,0.744013246,3.969861907,109.516743370,0.0226,0.0219,0.0277,0.0015,0.0015,0.0014,0.0277,0.0270,0.1252,0f0000d7,049c32c60
%RAWIMUSA,2060,199947.730;2060,199947.721869000,e5effe00,326102124,-22238349,-2467009,239993,186145,-344194
3d231d50
%RAWIMUSA,2060,199947.740;2060,199947.729869000,e5effe00,327339954,-20595078,-2383471,309235,294668,-4475640e38ac4f
#INSPVAXA,COM3,0,54.0,FINESTEERING,2060,199947.740,02008000,471d,14970;INS_SOLUTION_GOOD,INS_RTKFIXED,30.48279810338,114.16884102918,32.9221,-15.0000,-0.0017,-0.0013,0.0004,0.744177753,3.969368615,109.516524014,0.0226,0.0219,0.0277,0.0015,0.0015,0.0014,0.0277,0.0270,0.1252,0f0000d7,0
d1a22cca
%RAWIMUSA,2060,199947.750;2060,199947.737871000,e5effe00,327864855,-22570692,-2501913,276457,260878,25583695e68448
%RAWIMUSA,2060,199947.760;2060,199947.753869000,e5effe00,327267509,-19971751,-2455940,48848,274767,-235010
3af267c7
#INSPVAXA,COM3,0,54.0,FINESTEERING,2060,199947.760,02008000,471d,14970;INS_SOLUTION_GOOD,INS_RTKFIXED,30.48279810312,114.16884102919,32.9221,-15.0000,-0.0017,-0.0014,0.0004,0.744494474,3.970100239,109.516831818,0.0226,0.0219,0.0277,0.0015,0.0015,0.0014,0.0277,0.0270,0.1252,0f0000d7,022a7760c
%RAWIMUSA,2060,199947.770;2060,199947.761869000,e5effe00,326529719,-22582961,-2686763,246138,214149,-363235
ccdf31f4
%RAWIMUSA,2060,199947.780;2060,199947.769867000,e5effe00,326954076,-21078712,-2168514,-42367,456545,-15289784d695f0
#INSPVAXA,COM3,0,54.0,FINESTEERING,2060,199947.780,02008000,471d,14970;INS_SOLUTION_GOOD,INS_RTKFIXED,30.48279810284,114.16884102912,32.9221,-15.0000,-0.0019,-0.0012,0.0003,0.744368245,3.970120642,109.517181461,0.0226,0.0219,0.0277,0.0015,0.0015,0.0014,0.0277,0.0270,0.1252,0f0000d7,0
66c55d0f
%RAWIMUSA,2060,199947.790;2060,199947.777870000,e5effe00,327454071,-22841576,-2532231,143962,266552,146466978883d3
%RAWIMUSA,2060,199947.800;2060,199947.793867000,e5effe00,326776748,-21476220,-2762907,-82472,297629,-4327
de8f6d8a
#INSPVAXA,COM3,0,54.0,FINESTEERING,2060,199947.800,02008000,471d,14970;INS_SOLUTION_GOOD,INS_RTKFIXED,30.48279810256,114.16884102912,32.9220,-15.0000,-0.0018,-0.0010,0.0002,0.744883798,3.970798507,109.517423528,0.0226,0.0219,0.0277,0.0015,0.0015,0.0014,0.0277,0.0270,0.1252,0f0000d7,0e60481c0
%RAWIMUSA,2060,199947.810;2060,199947.801868000,e5effe00,326912022,-22458498,-3071586,335123,297463,-358519
398c38e4
%RAWIMUSA,2060,199947.820;2060,199947.809872000,e5effe00,327631876,-22035734,-2616261,157093,504686,64586c7955dfe
#INSPVAXA,COM3,0,54.0,FINESTEERING,2060,199947.820,02008000,471d,14970;INS_SOLUTION_GOOD,INS_RTKFIXED,30.48279810228,114.16884102911,32.9220,-15.0000,-0.0019,-0.0006,0.0007,0.744543643,3.971140207,109.517149611,0.0226,0.0219,0.0277,0.0015,0.0015,0.0014,0.0277,0.0270,0.1252,0f0000d7,0
b7e2dece

这里记录了组合惯导输出的log信息,其中INSPVAXA和RAWIMUSA是交错在一起的,我们想把这两条信息分别读取出来,并分别存储在文件中。代码如下:

#include <iostream>
#include <string>
#include <fstream>
using namespace std;

int main(){
    ifstream fin("test.DAT");
    ofstream fout_imu("imu.DAT");
    ofstream fout_ipv("ipv.DAT");
    if(!fin.is_open())
    {
        cout  << "open file error!" << endl;
        return -1;
    }

    string s;
    while(getline(fin, s))
    {
        if(s.find("%RAWIMUSA") != s.npos)
        {
            fout_imu << s << endl;
        }
        else if(s.find("#INSPVAXA") != s.npos)
        {
            fout_ipv << s << endl;
        }
    }

    fin.close();
    fout_imu.close();
    fout_ipv.close();


    cout << "hello world" << endl;
    return 0;
}

一些参考资料:https://blog.csdn.net/SZU_Crayon/article/details/81098721

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值