short story short, I've got data file which looks like this:

Prekės pavadinimas                 Atvežimo data  Pardavimo data   Kiekis   Kaina
---------------------------------------------------------------------------------
Juodos vilnojinės kojinės            2011 10 28	    2011 10 28	      5      6.79
Smulkus cukrus                       2011 11 19     2011 10 28       15      3.66
Pigus Batonas                        2011 11 23     2011 10 28       10      0.85
Raudonieji ankštiniai pipirai        2011 11 01     2011 10 28        8      7.00
Neriebus pienas                      2011 11 22     2011 10 28        5      1.69
Sausi pusryčiai                      2011 11 16     2011 10 28        5      5.00
Balta duona                          2011 11 22     2011 10 28       12      3.11
Šokoladiniai saldainiai "Pergalė"    2011 10 28     2011 10 28        4     12.99

I've got date values as int variables (for each year month and day), now whenever I compile I lose that zero for day value (01st)in front where I marked and i get output file like that:

-------------------------------------------------------------------------------------
Prekės pavadinimas	               Atvežimo data  Pardavimo data    Kiekis    Kaina
-------------------------------------------------------------------------------------
Juodos vilnojinės kojinės           2011 10 28      2011 10 28         5     6.79 Lt
Smulkus cukrus                      2011 11 19      2011 10 28        15     3.66 Lt
Pigus Batonas                       2011 11 23      2011 10 28        10     0.85 Lt
Raudonieji ankštiniai pipirai       2011 11 1      2011 10 28         8     7.00 Lt
Neriebus pienas                     2011 11 22      2011 10 28         5     1.69 Lt
Sausi pusryčiai                     2011 11 16      2011 10 28         5     5.00 Lt
Balta duona                         2011 11 22      2011 10 28        12     3.11 Lt
Šokoladiniai saldainiai "Pergalė"   2011 10 28      2011 10 28         4    12.99 Lt
-------------------------------------------------------------------------------------

question is, is there a way to avoid that without making them values doubles instead of int (such as setprecision/fixed things)?

Recommended Answers

All 4 Replies

You can use the combination of setw() and setfill('0') .

cout << setw(2) << setfill('0') << day;

so for print function I've made something like that:

void Spausdinti(const char failoVardas[], Parduotuve & prekes)
{
  ofstream fr(failoVardas, ios::app);
  fr << "-------------------------------------------------------------------------------------" << endl;
  fr << "Prekės pavadinimas	               Atvežimo data  Pardavimo data    Kiekis    Kaina" << endl;
  fr << "-------------------------------------------------------------------------------------" << endl;
  for (int i = 0; i < prekes.ImtiPrekiuSkaiciu(); i++) {
    Preke preke = prekes.ImtiPreke(i);
	fr << left << setw(35) << preke.ImtiPavadinima() << " "
		<< right << setw(4) << preke.ImtiAtvezimoMetus()   << " "
		<< setw(2) << setfill('0') << preke.ImtiAtvezimoMenesi()   << " "
		<< setw(2) << setfill('0') << preke.ImtiAtvezimoDiena() << " "
		<< setw(9) << setfill('0') << preke.ImtiPardavimoMetus() << " "
		<< setw(2) << setfill('0') << preke.ImtiPardavimoMenesi() << " "
		<< setw(2) << setfill('0') << preke.ImtiPardavimoDiena() << " "
       << setw(9) << preke.ImtiPrekiuKieki() << "  "
	   << setw(7) << setprecision(2) << fixed << preke.ImtiKaina() << " Lt" << endl;
  }
  fr << "-------------------------------------------------------------------------------------" << endl << endl;
  fr.close(); 
}

and now I get:

-------------------------------------------------------------------------------------
Prekės pavadinimas	               Atvežimo data  Pardavimo data    Kiekis    Kaina
-------------------------------------------------------------------------------------
Juodos vilnojinės kojinės           2011 10 28 000002011 10 28 000000005  0006.79 Lt
Smulkus cukrus                      2011 11 19 000002011 10 28 000000015  0003.66 Lt
Pigus Batonas                       2011 11 23 000002011 10 28 000000010  0000.85 Lt
Raudonieji ankštiniai pipirai       2011 11 01 000002011 10 28 000000008  0007.00 Lt
Neriebus pienas                     2011 11 22 000002011 10 28 000000005  0001.69 Lt
Sausi pusryčiai                     2011 11 16 000002011 10 28 000000005  0005.00 Lt
Balta duona                         2011 11 22 000002011 10 28 000000012  0003.11 Lt
Šokoladiniai saldainiai "Pergalė"   2011 10 28 000002011 10 28 000000004  0012.99 Lt
-------------------------------------------------------------------------------------

it fills the day properly but also them empty spaces between as well

For those sections where you want spaces instead of zeros, simply use setfill(' ') .

Ye did so, cheers anyway

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.