diff --git a/miscmaths.cc b/miscmaths.cc index 5076b396e4dbb5ef4f09f54001def9d0c41a8d30..08192f6b6bd5e4e4f936cd0d3e20e10ea6001731 100644 --- a/miscmaths.cc +++ b/miscmaths.cc @@ -141,8 +141,6 @@ namespace MISCMATHS { ReturnMatrix read_ascii_matrix(ifstream& fs) { - Matrix mat; - int rcount=0, cmax=0; double val; string cline; @@ -159,9 +157,8 @@ namespace MISCMATHS { } } cmax--; - RowVector newrow(cmax); - do { + do { getline(fs,cline); cline += " "; // force extra entry in parsing istrstream ss(cline.c_str()); @@ -169,20 +166,13 @@ namespace MISCMATHS { ss >> cc; if (!isnum(cc)) break; // stop processing when non-numeric line found rcount++; // add new row to matrix - newrow = 0.0; - int ccount = 1; - do { - val = atof(cc.c_str()); - if (ccount<=cmax) newrow(ccount++) = val; - ss >> cc; - } while (!ss.eof()); - - if (rcount>1) mat = mat & newrow; - else mat = newrow; - } while (!fs.eof()); + } while (!fs.eof()); - mat.Release(); - return mat; + // now know the size of matrix + fs.clear(); + fs.seekg(0,ios::beg); + return read_ascii_matrix(fs,rcount,cmax); + } #define BINFLAG 42