reading data file into a gsl matrix

Hi

both gsl_matrix_fread and gsl_matrix_fscanf require that matrix  must
be preallocated with the correct dimensions. now if I want to load the
data from a file and I don't know the number of rows and columns. do I
write a code to getline(in, line) and count++ or there is a better
way.
I know how to count the number of line from ifstream, but don't know howto get the number of words in one line which is the number of the column in the file, so that I can feed these info to the gsl_matrix for the size of the matrix to be allocated.

   ifstream in(file_name.c_str());
   string line = getline(in, line);
   stringstream input( line.c_str() ); <<-- error here
   
   string word;
   nCol = 0;
   while(inpput >> word)
      nCol++;

   nRows = 1;
   while (getline(in, line))
      nRows++;


thanks


samjAsked:
Who is Participating?
 
rajeev_devinConnect With a Mentor Commented:
Your modified code will be

ifstream in("data.txt");
string line;
getline(in, line);
stringstream input( line.c_str() );
      
string word;
int nCol = 0;
while(input >> word)
      nCol++;

int nRows = 1;
while (getline(in, line))
      nRows++;
0
 
rajeev_devinCommented:
>> string line = getline(in, line);
This is a wrong syntax. It would be

string line;
getline(in, line);
0
 
rajeev_devinCommented:
>> ifstream in("data.txt");
Change this to your previous statement.

ifstream in(file_name.c_str());
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.