#include "readCard.hh" #include #include "TStringManip.hh" #include #include #include #include #include using std::istream; using std::endl; using std::cout; using std::istringstream; //read strings till "eol" marker or natural end; if nread!=0 read nread string (no marker) Int_t readCard(istream& card,std::vector& list,Int_t nread) { Int_t count=0; TString temp; //std::string temp; while(card >> temp) { cout << "count:" << count << " temp:" << temp << endl; if(nread==0 && temp=="eol") break; if(nread==0 && temp=="*eol") break; if(nread==0 && temp=="!eol") break; count++; //list.push_back(temp.c_str()); list.push_back(temp); if(count==nread) break; } // loop return count; } //read nread doubles to list; if nread=0 assume 1st item is number of doubles Int_t readCard(istream& card,std::vector& list,Int_t nread) { if(nread==0) { card >> nread; } for(Int_t i=0; i> temp; list.push_back(temp); } return nread; } //read nread ints to list; if nread=0 assume 1st item is number of ints Int_t readCard(istream& card,std::vector& list,Int_t nread){ if(nread==0) { card >> nread; } for(Int_t i=0; i> temp; list.push_back(temp); } return nread; } TString getCard(std::istream& input,TString commentMarkers) { const Int_t mcard=120; char card[mcard]; Int_t loop=1; while(loop) { //read a card input.getline(card,mcard,'\n'); TString CARD(card); if(CARD=="") continue; // skip empty cards TString first=getFirstNonBlank(CARD); if(commentMarkers.Contains(first)) continue; // skip comment cards Int_t nNonBlank=countNonBlank(CARD); if(nNonBlank==0) continue; // skip blank cards return CARD; } return TString(""); } void testRead() { ifstream input("test.data"); const Int_t mcard=120; char acard[mcard]; std::vector lista; // input.getline(acard,mcard,'\n'); istringstream a(acard); // readCard(a,lista); readCard(input,lista); Int_t na=lista.size(); cout << "na:" << na << endl; for(Int_t i=0; i