#include <iostream>
#include <iomanip>
#include <sstream>
#include <vector>
int main()
{
std::vector<double> numbers {
3.141516, 1.01, 200.78901, 0.12345, 9.99999
};
for (auto x : numbers)
{
// "print" the number
std::stringstream ss;
ss << std::fixed << std::setprecision(4) << x;
// remove the unwanted zeroes
std::string result{ss.str()};
while (result.back() == '0')
result.pop_back();
// remove the separator if needed
if (result.back() == '.')
result.pop_back();
std::cout << result << '\n';
}
std::cout << "\nJustified:\n";
for (auto x : numbers)
{
// "print" the number
std::stringstream ss;
ss << std::fixed << std::setprecision(4) << std::setw(15) << x;
// remove the unwanted zeroes
std::string result{ss.str()};
auto it = result.rbegin();
while (*it == '0')
*it++ = ' ';
// remove the separator if needed
if (*it == '.')
*it = ' ';
std::cout << result << '\n';
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPHNzdHJlYW0+CiNpbmNsdWRlIDx2ZWN0b3I+CgppbnQgbWFpbigpCnsKICAgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gbnVtYmVycyB7CiAgICAJMy4xNDE1MTYsIDEuMDEsIDIwMC43ODkwMSwgMC4xMjM0NSwgOS45OTk5OQogICAgfTsKCiAgICBmb3IgKGF1dG8geCA6IG51bWJlcnMpCiAgICB7CiAgICAJLy8gInByaW50IiB0aGUgbnVtYmVyCiAgICAJc3RkOjpzdHJpbmdzdHJlYW0gc3M7CiAgICAJc3MgPDwgc3RkOjpmaXhlZCA8PCBzdGQ6OnNldHByZWNpc2lvbig0KSA8PCB4OwogICAgCQogICAgCS8vIHJlbW92ZSB0aGUgdW53YW50ZWQgemVyb2VzCiAgICAJc3RkOjpzdHJpbmcgcmVzdWx0e3NzLnN0cigpfTsKICAgIAl3aGlsZSAocmVzdWx0LmJhY2soKSA9PSAnMCcpCiAgICAJCXJlc3VsdC5wb3BfYmFjaygpOwogICAgCQkKICAgIAkvLyByZW1vdmUgdGhlIHNlcGFyYXRvciBpZiBuZWVkZWQJCiAgICAJaWYgKHJlc3VsdC5iYWNrKCkgPT0gJy4nKQogICAgCQlyZXN1bHQucG9wX2JhY2soKTsKICAgIAkJCiAgICAgICAgc3RkOjpjb3V0IDw8IHJlc3VsdCAgPDwgJ1xuJzsKICAgIH0KICAgIAogICAgc3RkOjpjb3V0IDw8ICJcbkp1c3RpZmllZDpcbiI7CiAgICBmb3IgKGF1dG8geCA6IG51bWJlcnMpCiAgICB7CiAgICAJLy8gInByaW50IiB0aGUgbnVtYmVyCiAgICAJc3RkOjpzdHJpbmdzdHJlYW0gc3M7CiAgICAJc3MgPDwgc3RkOjpmaXhlZCA8PCBzdGQ6OnNldHByZWNpc2lvbig0KSA8PCBzdGQ6OnNldHcoMTUpIDw8IHg7CiAgICAJCiAgICAJLy8gcmVtb3ZlIHRoZSB1bndhbnRlZCB6ZXJvZXMKICAgIAlzdGQ6OnN0cmluZyByZXN1bHR7c3Muc3RyKCl9OwogICAgCWF1dG8gaXQgPSByZXN1bHQucmJlZ2luKCk7CiAgICAJd2hpbGUgKCppdCA9PSAnMCcpCiAgICAJCSppdCsrID0gJyAnOwogICAgCQkKICAgIAkvLyByZW1vdmUgdGhlIHNlcGFyYXRvciBpZiBuZWVkZWQJCiAgICAJaWYgKCppdCA9PSAnLicpCiAgICAJCSppdCA9ICcgJzsKICAgIAkJCiAgICAgICAgc3RkOjpjb3V0IDw8IHJlc3VsdCAgPDwgJ1xuJzsKICAgIH0KfQ==