Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > number of words in a line

Reply
Thread Tools

number of words in a line

 
 
Gary Wessle
Guest
Posts: n/a
 
      07-21-2006
hi
I have a data file with equal number of columns for each row. I need
to get the number of rows and columns to allocate a matrix in gsl.

getline (in, line) and parse the line for the number of spaces then
add one to get the number of words then
number_of_rows = 1;
while getline (in, line) and number_of_rows++ does the number of rows

I am not sure how to go about the number of words task, is there a c++
approved regex for c++?
because
string word
while(in >> word) count++ will go through the whole file. I just want
one line.

thanks
 
Reply With Quote
 
 
 
 
Gary Wessle
Guest
Posts: n/a
 
      07-21-2006
Gary Wessle <(E-Mail Removed)> writes:

> hi
> I have a data file with equal number of columns for each row. I need
> to get the number of rows and columns to allocate a matrix in gsl.
>
> getline (in, line) and parse the line for the number of spaces then
> add one to get the number of words then
> number_of_rows = 1;
> while getline (in, line) and number_of_rows++ does the number of rows
>
> I am not sure how to go about the number of words task, is there a c++
> approved regex for c++?
> because
> string word
> while(in >> word) count++ will go through the whole file. I just want
> one line.
>
> thanks


I tried
ifstream in(file_name.c_str());
string line = getline(in, line);
stringstream input( line.c_str() );

string word;
nCol = 0;
while(inpput >> word)
nCol++;

did not do it
 
Reply With Quote
 
 
 
 
asoofi@purdue.edu
Guest
Posts: n/a
 
      07-21-2006
Hi Gary
This is just a thought, but why don't you put a counter on every time a
space is found?

As long as you properly detect when to exit your loop, that should
suffice.

Gary Wessle wrote:
> Gary Wessle <(E-Mail Removed)> writes:
>
> > hi
> > I have a data file with equal number of columns for each row. I need
> > to get the number of rows and columns to allocate a matrix in gsl.
> >
> > getline (in, line) and parse the line for the number of spaces then
> > add one to get the number of words then
> > number_of_rows = 1;
> > while getline (in, line) and number_of_rows++ does the number of rows
> >
> > I am not sure how to go about the number of words task, is there a c++
> > approved regex for c++?
> > because
> > string word
> > while(in >> word) count++ will go through the whole file. I just want
> > one line.
> >
> > thanks

>
> I tried
> ifstream in(file_name.c_str());
> string line = getline(in, line);
> stringstream input( line.c_str() );
>
> string word;
> nCol = 0;
> while(inpput >> word)
> nCol++;
>
> did not do it


 
Reply With Quote
 
asoofi@purdue.edu
Guest
Posts: n/a
 
      07-21-2006
***************************

File *inFile;
char *buff;
char temp=0;
int i=0;
int ctr=0;

buff=(char *)(malloc(sizeof(1024));

inFile=fopen("input.txt","r");
fgets(buff, 1024, inFile);

while(!feof(inFile))
{
i=0;
while(temp!='\n')
{
temp=buff[i]; //Iterating through the buffered line, looking for a
space
if(temp==32) //32 is the ascii for a space
ctr++;
i++;
}
ctr++; //This accounts for the last word in the line, since it's not
//followed by a space

fgets(buff, 1024, inFile);
}

fclose(inFile);

***************************
I haven't tested that, but it should work, or should be very close to
working.
There may be minor areas.

The number of words will be in ctr at the fclose, at least
theoretically.

Hope that helps.

http://www.velocityreviews.com/forums/(E-Mail Removed) wrote:
> Hi Gary
> This is just a thought, but why don't you put a counter on every time a
> space is found?
>
> As long as you properly detect when to exit your loop, that should
> suffice.
>
> Gary Wessle wrote:
> > Gary Wessle <(E-Mail Removed)> writes:
> >
> > > hi
> > > I have a data file with equal number of columns for each row. I need
> > > to get the number of rows and columns to allocate a matrix in gsl.
> > >
> > > getline (in, line) and parse the line for the number of spaces then
> > > add one to get the number of words then
> > > number_of_rows = 1;
> > > while getline (in, line) and number_of_rows++ does the number of rows
> > >
> > > I am not sure how to go about the number of words task, is there a c++
> > > approved regex for c++?
> > > because
> > > string word
> > > while(in >> word) count++ will go through the whole file. I just want
> > > one line.
> > >
> > > thanks

> >
> > I tried
> > ifstream in(file_name.c_str());
> > string line = getline(in, line);
> > stringstream input( line.c_str() );
> >
> > string word;
> > nCol = 0;
> > while(inpput >> word)
> > nCol++;
> >
> > did not do it


 
Reply With Quote
 
Gary Wessle
Guest
Posts: n/a
 
      07-21-2006
(E-Mail Removed) writes:

> ***************************
>
> File *inFile;
> char *buff;
> char temp=0;
> int i=0;
> int ctr=0;
>
> buff=(char *)(malloc(sizeof(1024));
>
> inFile=fopen("input.txt","r");
> fgets(buff, 1024, inFile);
>
> while(!feof(inFile))
> {
> i=0;
> while(temp!='\n')
> {
> temp=buff[i]; //Iterating through the buffered line, looking for a
> space
> if(temp==32) //32 is the ascii for a space
> ctr++;
> i++;
> }
> ctr++; //This accounts for the last word in the line, since it's not
> //followed by a space
>
> fgets(buff, 1024, inFile);
> }
>
> fclose(inFile);
>
> ***************************
> I haven't tested that, but it should work, or should be very close to
> working.
> There may be minor areas.
>
> The number of words will be in ctr at the fclose, at least
> theoretically.
>
> Hope that helps.
>


thanks, I will try to convert it to c++ since I am learning that now,
and test it, but I understand the idea.
my solution was

****************
void No_of_Rows_Cols() {
ifstream in(file_name.c_str());
string line;
getline(in, line);
stringstream input( line.c_str() );

string word;
nCol = 0;
while(input >> word)
nCol++;

nRows = 1;
while (getline(in, line))
nRows++;
}
****************
 
Reply With Quote
 
asoofi@purdue.edu
Guest
Posts: n/a
 
      07-21-2006
Theoretically, all of C can be used in C++.

If you throw that into a cpp file, it should still work.

But glad it helped! If it doesnt let me know and I'll throw it into a
compiler and see what I can do.
Gary Wessle wrote:
> (E-Mail Removed) writes:
>
> > ***************************
> >
> > File *inFile;
> > char *buff;
> > char temp=0;
> > int i=0;
> > int ctr=0;
> >
> > buff=(char *)(malloc(sizeof(1024));
> >
> > inFile=fopen("input.txt","r");
> > fgets(buff, 1024, inFile);
> >
> > while(!feof(inFile))
> > {
> > i=0;
> > while(temp!='\n')
> > {
> > temp=buff[i]; //Iterating through the buffered line, looking for a
> > space
> > if(temp==32) //32 is the ascii for a space
> > ctr++;
> > i++;
> > }
> > ctr++; //This accounts for the last word in the line, since it's not
> > //followed by a space
> >
> > fgets(buff, 1024, inFile);
> > }
> >
> > fclose(inFile);
> >
> > ***************************
> > I haven't tested that, but it should work, or should be very close to
> > working.
> > There may be minor areas.
> >
> > The number of words will be in ctr at the fclose, at least
> > theoretically.
> >
> > Hope that helps.
> >

>
> thanks, I will try to convert it to c++ since I am learning that now,
> and test it, but I understand the idea.
> my solution was
>
> ****************
> void No_of_Rows_Cols() {
> ifstream in(file_name.c_str());
> string line;
> getline(in, line);
> stringstream input( line.c_str() );
>
> string word;
> nCol = 0;
> while(input >> word)
> nCol++;
>
> nRows = 1;
> while (getline(in, line))
> nRows++;
> }
> ****************


 
Reply With Quote
 
davidrubin@warpmail.net
Guest
Posts: n/a
 
      07-23-2006

(E-Mail Removed) wrote:
> Theoretically, all of C can be used in C++.


This is absolutely false.

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Replace stop words (remove words from a string) BerlinBrown Python 6 01-17-2008 02:37 PM
Words Words utab C++ 6 02-16-2006 07:00 PM
Non-noise words are incorrectly recognised as noise words. Peter Strĝiman ASP .Net 1 08-23-2005 01:26 PM
Read a file line by line with a maximum number of characters per line Hugo Java 10 10-18-2004 11:42 AM
Re: A little bit of help regarding my linked list program required. - "words.c" - "words.c" Richard Heathfield C Programming 7 10-05-2003 02:38 PM



Advertisments