Reading from txt file into vector then sorting numerically.
Nov 22, 2014 at 8:54pm UTC
03 Ribena 7 2.20
17 Coffee 76 1.50
24 Tea 21 1.10
39 Sprite 3 1.70
56 Cola 18 1.70
68 Orange 106 2.20
77 Lime 11 2.10
86 Grape 34 2.30
55 Chocolate 15 2.70
16 Frosty 20 2.20
55 Lemonade 21 1.90
55 Yoghurt 99 3.40
05 Punch 3 1.70
These records need to be sorted according to their ITEM NUMBER that is on the first column.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
void record_initialize()
{
vector<string> record;
cout << "\n" ;
record.push_back("03" "\t\t" "Ribena" "\t\t" "7" "\t\t" "2.20" );
record.push_back("17" "\t\t" "Coffee" "\t\t" "76" "\t\t" "1.50" );
record.push_back("24" "\t\t" "Tea" "\t\t" "21" "\t\t" "1.10" );
record.push_back("39" "\t\t" "Sprite" "\t\t" "3" "\t\t" "1.70" );
record.push_back("56" "\t\t" "Cola" "\t\t" "18" "\t\t" "1.70" );
record.push_back("68" "\t\t" "Orange" "\t\t" "106" "\t\t" "2.20" );
record.push_back("77" "\t\t" "Lime" "\t\t" "11" "\t\t" "2.10" );
record.push_back("86" "\t\t" "Grape" "\t\t" "34" "\t\t" "2.30" );
record.push_back("55" "\t\t" "Chocolate" "\t" "15" "\t\t" "2.70" );
record.push_back("16" "\t\t" "Frosty" "\t\t" "20" "\t\t" "2.20" );
record.push_back("55" "\t\t" "Lemonade" "\t" "21" "\t\t" "1.90" );
record.push_back("55" "\t\t" "Yoghurt" "\t\t" "99" "\t\t" "3.40" );
record.push_back("05" "\t\t" "Punch" "\t\t" "3" "\t\t" "1.70" );
cout << "\n" ;
//sort(record.begin(), record.end());
ofstream output_file("Drinks.txt" );
ostream_iterator<string> output_iterator(output_file, "\n" );
copy(record.begin(), record.end(), output_iterator);
}
void record_add()
{
DrinkRecord d;
cout << "\n" ;
cout << "Please enter the item no.: " ;
cin >> d.no;
cout << "\n" ;
cout << "Please enter name of drink: " ;
cin >> d.name;
cout << "\n" ;
cout << "Please enter the quantity: " ;
cin >> d.quantity;
cout << "\n" ;
cout << "Please enter the unit price: " ;
cin >> d.price;
cout << "\n" ;
ofstream myfile;
myfile.open("Drinks.txt" , ios::app | ios::out);
cout << "\n" ;
myfile << d.no << "\t\t" << d.name << "\t\t" << d.quantity << "\t\t" << d.price << endl;
myfile.close();
}
void record_view()
{
cout << "\n" ;
cout << "ItemNo" << "\t\t" << "ItemName" << "\t" << "Quantity" << "\t" << "Unit Price" << endl;
cout << "\n" ;
string getcontent;
ifstream openfile("Drinks.txt" );
if (openfile.is_open())
{
while (!openfile.eof())
{
getline(openfile, getcontent);
cout << getcontent << endl;
}
}
}
I have managed to do that part. But I am now having problems to sort after I add a new item to the drinks inventory. My lecturer told me to read the txt file into a vector, then sort the vector and then show the results. I cant seem to get the right steps. Any help would be much appreciated.
I tried something like this.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
void read_File() //Read the file into the vector function definition
{
vector<string> logs;
string line;
cout << "Testing loading of file." << endl;
ifstream myfile("Drinks.txt" );
if (myfile.is_open())
{
while (!myfile.eof())
{
getline(myfile, line);
logs.push_back(line);
sort(line.begin(), line.end());
}
myfile.close();
}
else {
cout << "Unable to open file." << endl;
}
}
Last edited on Nov 22, 2014 at 8:55pm UTC
Topic archived. No new replies allowed.