如何使用C ++从标识符/字符串之间的大文件中提取行?

时间:2019-06-03 13:50:31

标签: c++

我的.txt文件的格式如下:

...
...
Start 75
23 55 00 00 00 48 00 05 -10 -53
21 45 03 00 00 00 12 06 -08 09
03 55 00 00 00 88 10 75 -10 -53
51 35 00 34 50 00 12 06 100 09
Start 76
33 55 00 50 00 48 80 05 -10 -93
61 15 33 00 30 00 12 00 -08 19
91 35 10 32 50 00 12 06 -30 09
Start 77
...
...

标识符“开始”用于分隔两束数据。标识符之间的行数并不总是恒定的。基本上,在获取数据时会拒绝很多零行,因此我无法读取两个“开始”实例之间的固定“ n”行数。

现在,我使用以下代码逐行读取它:

#include <fstream>
#include <iostream>
#include <string>
#include <stdio.h>
#include <vector>

using namespace std;

int main(int argc,char **argv) {

    string filename;
    ifstream file(filename.c_str());
    char word[BUFSIZ];
    char start, end;

    if (argc == 2) {
        filename = argv[1];}
    else { 
        cout<<"Usage: " << argv[0] << "filename" << endl;
        exit (-1);}

    if (file.is_open()) {

        string line;
        string numbers;
        vector<int> myNumbers;
        int count = 0;

        while(file.good()) {

            getline(file, line);

       //-------I am really lost here. 
       //-------I tried many approaches but the bunches seem to get mixed up

            //if (count < 2){
            //    if (line.find("Start") != string::npos){
            //        count++; }
            //     else {
            //        numbers.append(line);
            //        numbers.append("\n--");}
            //}
            //else {
            //    cout << endl << numbers << endl;
            //    count = 0;
            //    numbers.clear();}
        }
        file.close();}
}

我正在尝试在“开始”的第一个实例处对line进行分组(现在使用字符串将所有行分组在一起),直到遇到另一个“开始”实例。我将所有这些值按其顺序转换为vector,以存储下一个值。我不太擅长C ++,所以在这里呆了下来,不确定这一步的实现,或者不确定是否存在更好的方法。我还必须提到txt文件总共有大约一百万行。我需要如何在两个“开始”字符串之间按行分组的行的帮助吗?

0 个答案:

没有答案