Sunday, February 12, 2012

How can I search a text file in C++?

Thanks for reading this guys! I've got another c++ problem that's driving me crazy!

I'm trying to create a program that will read a text file and allow the user to search for a required string but the text file I have is causing me problems.



An example of the text file is as follows:

Forsyth, Frederick ;The fist of god ;A; 102391

Follett, Ken ;The pillars of the earth ;A; 103795

Francis, Clare ;Wolf winter ;A; 112424

Smith, Wilbur ;A falcon flies ;A; 151395

Forsyth, Frederick ;The day of the jackal ;A; 159151

Blackmore, R.D. ;Lorna Doone ;A; 193292



my code so far is:

#include %26lt;iostream%26gt;

#include %26lt;fstream%26gt;

#include %26lt;stdlib.h%26gt;

#include %26lt;string%26gt;



using namespace std;



int main()



{



string BookAuthSurName;

string BookAuthFirstName;

string BookTitle;

string BookIDcode;







ifstream bookdata;



bookdata.open("bookdata.txt");





if (!bookdata)

{

cout %26lt;%26lt; "File not found." %26lt;%26lt; endl;

}



{

while (!bookdata.eof() )

{



for(int i = 0; !bookdata.eof(); i++)

{

getline(bookdata, BookAuthSurName, ' ' );

getline(bookdata, BookAuthFirstName, ' ');

getline(bookdata, BookTitle, ' ');

getline(bookdata, BookIDcode, '\n');



cout%26lt;%26lt;"BookAuthSurName: "%26lt;%26lt;BookAuthSurName%26lt;%26lt;endl;

cout%26lt;%26lt;"BookAuthFirstName: "%26lt;%26lt;BookAuthFirstName%26lt;%26lt;endl;

cout%26lt;%26lt;"BookTitle: "%26lt;%26lt;BookTitle%26lt;%26lt;endl;

cout%26lt;%26lt;"BookIDcode: "%26lt;%26lt;BookIDcode%26lt;%26lt;endl;

cout%26lt;%26lt;"---------------------------------鈥?br>
}

}

}

bookdata.close();

}



an example of the output is:

BookAuthSurName: Forsyth,

BookAuthFirstName: Frederick

BookTitle:

BookIDcode: ;The fist of god ;A; 102391

-------------------------------------

BookAuthSurName: Follett,

BookAuthFirstName: Ken

BookTitle:

BookIDcode: ;The pillars of the earth ;A; 103795

-------------------------------------

BookAuthSurName: Francis,

BookAuthFirstName: Clare

BookTitle:

BookIDcode: ;Wolf winter ;A; 112424

-------------------------------------



Now what I cant work out is how to break the data up into variables and put it in a struct?



I am assuing that once the data is in a struct I will be able to perform something like a linear search on each line to find the data?



if anyone could shed any light on these problems I would be most grateful!How can I search a text file in C++?
So you will use a struct to define a new type that stores a collection of information on books. A good type name would be "Book."



We can define it as:



struct Book

{

String member1;

String member2;

...

String memberN;

}



You will populate a struct array or vector depending on what you choose.



Then you just iterate doing a substring scan of what you're trying to find. See source for more information.How can I search a text file in C++?
your struct would look something like this:



struct Book

{

string BookAuthSurName;

string BookAuthFirstName;

string BookTitle;

string BookIDcode;

}



Then make an aray of Book called Library (or whatever you want):

Book Library[20];



Note: There are other ways to do it, but for ease of coding I just declared an array of 20 Book's.



Then to load the array:

i = 0;

do{

getline(bookdata, Library[i].BookAuthSurName, ' ' );

getline(bookdata, Library[i].BookAuthFirstName, ' ');

getline(bookdata, Library[i].BookTitle, ' ');

getline(bookdata, Library[i].BookIDcode, '\n');

i++;

}

while (!bookdata.eof());

No comments:

Post a Comment