我有一個數據文件,裡面的格式是自己定義的
###################begin##line############################
[C 1 1] [C 1 7] [C 1 8] [C 2 2] [C 2 5] [C 2 6] [C 2 7] [C 2 8] [C 3 3] [C 3 4] [C 3 5] [C 4 4] [C 5 5] [C 6 6] [C 6 7] [C 7 7] [C 8 8]
####################end##line############################
我有下面的問題,想請某位大神指點一下:
1. 我讀取文件時,不知道文件有多少行,上面只是一行樣本,還有很多行,每一行也不知道有多少“[c int int]”這樣的配對,因為int不知道有多大,應該用什麼結構存儲;
2. 讀取時有沒有什麼快捷的讀取方式,我最終想獲取的是“[ ]”裡那兩個int的值。
小弟不勝感激!大拜!
如果知道每行的最大長度,可以試試
#include <iostream>
#include <vector>
#include <cstring>
using namespace std;
char buffer[MAX_LENGTH+1];
int main(){
FILE *fp = fopen(?, "r");
vector<vector<item*>*> *vv = new vector<vector<item*>*>();
while(feof(fp) == 0){
vector<item*> *v = new vector<item*>();
fgets(buffer, MAX_LENGTH+1, fp);
char *pch = strtok(buffer, " []C");
long temp = atol(pch);
pch = strtok(buffer, " []C");
v->push_back(new item(temp, atol(pch));
while(pch != NULL){
pch = strtok(buffer, " []C");
temp = atol(pch);
pch = strtok(buffer, " []C");
v->push_back(new item(temp, atol(pch));
}
vv->push_back(v);
}
}