我的.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文件总共有大约一百万行。我需要如何在两个“开始”字符串之间按行分组的行的帮助吗?