STL::MAP: Printing values only once ..

Hi, I have a input.txt file seperator by pipe '|' as - 40147|181|ORANGE|MIKE|XX||1000397900|3500 40148|373|ORANGE|BOB|XX||1078889400|4500 40149|673|ORANGE|TREY|XX||1095159900|5500 I only wish to have all the FIRST(ID=40147) and LAST FIELD(PRICE=3500) to be printed for three lines as given above. I am reading as - -- #include <iostream> #include <fstream> #include <sstream> #include <string> #include <boost/algorithm/string.hpp> using namespace std; struct FILE_INPUT { int ID; int Asset_ID; char T_Name[]; char Symbol[]; char Series[]; char Gap; int Date; int price; }; int main() { typedef std::map<int, int> unordmap; unordmap ask; FILE_INPUT fl_inp; memset( &fl_inp, 0, sizeof(fl_inp) ); ifstream in ("input.txt"); string s; const char delimiter = '|'; while ( getline (in, s) ) { trim( s ); if ( !s.empty() ) { stringstream strm( s ); string item; getline( strm, item ); stringstream stra( item ); string tmp; getline( stra, tmp, delimiter ); { stringstream strb( tmp ); strb >> fl_inp.ID; } getline( stra, tmp, delimiter ) { stringstream strb( tmp ); strb >> fl_inp.price; } ask.insert( std::make_pair((fl_inp.ID),(fl_inp.price)) ); unordmap::iterator pos = ask.begin(); for (pos = ask.begin(); pos != ask.end(); ++pos) { std::cout << "ID: " << pos->first << "\t" << "Price: " << pos->second << std::endl; } std::cout << " " << endl; } } } -- The map is being inserted with both ID as key and price as value but while printing it prints the values thrice as - ID: 40147 Price: 3500 ID: 40147 Price: 4500 ID: 40148 Price: 5500 ID: 40147 Price: 3500 ID: 40148 Price: 4500 ID: 40149 Price: 5500 The MAP should print all values together only once as - ID: 40147 Price: 3500 ID: 40148 Price: 4500 ID: 40149 Price: 5500 -- Can I maintain some checks to print all values simply once. Thanks.

This has nothing to do with boost. Please do not post general programming problems here.

On Sat, Jan 18, 2014 at 02:42:27AM +0000, PB wrote:
This has nothing to do with boost. Please do not post general programming problems here.
I've got to commend him for authoring a post that is readable and has a thread of reasoning throughout, however. A great improvement from before. It lights up like a christmas tree in my mail viewer due to the use of '-- ' on some lines, which canonically denotes signature blocks in mails. I like that the OP has managed to find a compiler that accepts zero-length-arrays in the middle of structs. I'd expect pretty much any modern compiler to reject such things out of spite. -- Lars Viklund | zao@acc.umu.se

On 18 January 2014 02:29, Rahul Mathur wrote:
Hi,
I have a input.txt file seperator by pipe '|' as -
Why can you not understand that your questions are off-topic on this mailing list? Questions about std::map have nothing to do with Boost. You've been told repeatedly to stop, if you can't understand that then you should not be allowed near a computer.

Hi, 2014/1/18 Jonathan Wakely <jwakely.boost@kayari.org>
There are good places in the Web where you can ask general c++ questions. Check out StackOverflow (http://stackoverflow.com/). Regards, Adam
participants (5)
-
Adam Wulkiewicz
-
Jonathan Wakely
-
Lars Viklund
-
PB
-
Rahul Mathur