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
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 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.