c++におけるfstreamの使用例

3950 ワード

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,-3441943d231d50 %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,0d1a22cca %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,-2350103af267c7 #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,-363235ccdf31f4 %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,066c55d0f %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,-4327de8f6d8a #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,-358519398c38e4 %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,0b7e2dece
ここでは,INSPVAXAとRAWIMUSAが交錯しているコンビネーションコンダクタンス出力のlog情報を記録し,この2つの情報をそれぞれ読み出し,それぞれファイルに格納したい.コードは次のとおりです.
#include 
#include 
#include 
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