Salve a tutti .. sto cercando di leggere dei dati da un file contenente delle linee di testo in cui e` nascosta la dimensione delle righe del blocco da leggere ... per capirci meglio qui ho incollato il file :
http://dpaste.com/19HQY5
il programma che ho scritto per ora e` questo :
# include <iostream>
# include <fstream>
# include <iomanip>
# include <string>
# include <sstream>
# include <cstdlib>
# include <cmath>
# include <vector>
# include <exception>
# include <algorithm>
# include <cstring>
//----------------------------------------------------------------------------------------
using namespace std;
//--- Function prototipes
string readInput(int args, char* argv[],string& , string&);
void readData(vector<vector<vector<double>>>*, string& , int&);
//---
int main(int args, char* argv[]){
string time,root ;
string filename = "stangle.000000000.dat" ;
int N;
cout << "Processing " << filename << " ...." << endl;
vector<vector<vector<double>>>* ptrData ;
vector<vector<vector<double>>> TableData;
//cout << "ok" << endl ;
ptrData = new vector<vector<vector<double>>>(10);
readData(ptrData, filename, N);
int k=0;
cout << "--------------------" << endl;
//ptrData.resize(k)
// for(int i ; i < N ; i++ ){
// }
/*
cout << N << endl ;
for(int i=0; i< N; i++ ){
for(int j=0; j<3 ; j++){
cout << ptrData->at(k).at(i).at(j) << ' ' ;
}
cout << endl ;
}
*/
//
return 0;
}
//
//------
void readData( vector<vector<vector<double>>>* data, string& file, int& size){
unsigned int header = 3;
string tmp, row ;
ifstream inputFile;
cout << file << endl;
try
{
inputFile.open(file, ios::in);
}
catch(...)
{
cerr << "Error occurred opening file " << file << " program terminate!" << endl;
exit(1);
}
int indx=0;
vector<vector<vector<double>>> *vPtr ;
//vector<vector<vector<double>>> *
//data = new vector<vector<vector<double>>>(10);
int k=0;
int w=0;
getline(inputFile,row);
istringstream elem(row);
while(elem >> tmp);
// if(k==0)http://dpaste.com/19HQY58
while(!inputFile.eof() && k<=1){
while( w++ <= header-1 && getline(inputFile,row)){
istringstream elem(row);
if(w == header ){
while(elem >> tmp){
if(strcmp(tmp.c_str(),"I=" )== 0){
elem >> tmp ;
size = atoi(tmp.c_str());
}
}
}
}
cout << "size = " << size << endl;
//cout << size << endl;
//k=0;
data->resize(size*3) ;
data->at(k).resize(size*3) ;
for(int i=0; i<size; i++) // resize vector !
data->at(k)[i].resize(3) ;
int j=0;
while(getline(inputFile,row) && j < size){
istringstream elem(row);
for(int i=0; i < 3; i++)
elem >> data->at(k)[j].at(i);
elem >> tmp ; // 4th columns to skip
j++;
}
//vPtr->at(indx) = data;
for(int i=0; i < size ; i++ )
cout << data->at(k).at(i).at(0) << ' ' << data->at(k).at(i).at(1) << ' ' << data->at(k).at(i).at(2) << endl ;
k++ ;
}
}
non riesco a catturare correttamente la stringa "I=" che precede la size del file