| | |
Right Justified / decimal point alignment
![]() |
you could, for example, use printf or sprintf or its ilk. Take a look at the specifications for the strings. You can control right or left justification, leading zeros, number of digits after the decimals, etc.
If your output is using a proportional font, the spaces won't be as wide as the digits, so that can be a problem too; hopefully you will use a non-proportional font, or else you'll have to do placement in some measurement like pixels or inches.
If your output is using a proportional font, the spaces won't be as wide as the digits, so that can be a problem too; hopefully you will use a non-proportional font, or else you'll have to do placement in some measurement like pixels or inches.
•
•
Join Date: Jan 2005
Posts: 14
Reputation:
Solved Threads: 0
I'm using visual studio C++ I've run across ios class manipulators like set precision, left, right -- haven't used them yet though, wondering if these are the best/simplest approach I should be using. I don't see leading zero manipulators? Any additional advise?
•
•
•
•
Originally Posted by Chainsaw
you could, for example, use printf or sprintf or its ilk. Take a look at the specifications for the strings. You can control right or left justification, leading zeros, number of digits after the decimals, etc.
If your output is using a proportional font, the spaces won't be as wide as the digits, so that can be a problem too; hopefully you will use a non-proportional font, or else you'll have to do placement in some measurement like pixels or inches.
When in doubt, use the old workhorse printf(). I have played around with manipulators like [php]cout << setfill('0') << setw(8) << d1;
[/php] with results that cause only consternation. The old printf() like Chainsaw mentioned works well:
[php]// right justified numeric output (Dev-C++)
#include <cstdlib>
#include <iostream> // may have to include stdio.h with VC++
using namespace std;
int main()
{
double d1 = 30.768;
double d2 = 1.345;
double d3 = .430;
printf("%8.3f\n",d1);
printf("%8.3f\n",d2);
printf("%8.3f\n\n",d3);
system("PAUSE");
return EXIT_SUCCESS;
}
[/php]
[/php] with results that cause only consternation. The old printf() like Chainsaw mentioned works well:
[php]// right justified numeric output (Dev-C++)
#include <cstdlib>
#include <iostream> // may have to include stdio.h with VC++
using namespace std;
int main()
{
double d1 = 30.768;
double d2 = 1.345;
double d3 = .430;
printf("%8.3f\n",d1);
printf("%8.3f\n",d2);
printf("%8.3f\n\n",d3);
system("PAUSE");
return EXIT_SUCCESS;
}
[/php]
May 'the Google' be with you!
When challenged, think a little!!!!!!!!!! Yes you can line up your decimal points with std::cout ...
[php]// right justified numeric output (Dev-C++)
#include <cstdlib>
#include <iostream>
#include <iomanip> // setXXX() functions
using namespace std;
int main()
{
double d1 = 30.768;
double d2 = 1.345;
double d3 = .430;
// this works well, the decimal points line up
printf("%8.3f\n",d1);
printf("%8.3f\n",d2);
printf("%8.3f\n\n",d3);
// dito, but keep the order of setXXX() functions!!
cout << setiosflags(ios::right);
cout << setiosflags(ios::fixed);
cout << setw(8) << setprecision(3) << d1 << endl;
cout << setw(8) << setprecision(3) << d2 << endl;
cout << setw(8) << setprecision(3) << d3 << endl << endl;
system("PAUSE");
return EXIT_SUCCESS;
}
[/php]
[php]// right justified numeric output (Dev-C++)
#include <cstdlib>
#include <iostream>
#include <iomanip> // setXXX() functions
using namespace std;
int main()
{
double d1 = 30.768;
double d2 = 1.345;
double d3 = .430;
// this works well, the decimal points line up
printf("%8.3f\n",d1);
printf("%8.3f\n",d2);
printf("%8.3f\n\n",d3);
// dito, but keep the order of setXXX() functions!!
cout << setiosflags(ios::right);
cout << setiosflags(ios::fixed);
cout << setw(8) << setprecision(3) << d1 << endl;
cout << setw(8) << setprecision(3) << d2 << endl;
cout << setw(8) << setprecision(3) << d3 << endl << endl;
system("PAUSE");
return EXIT_SUCCESS;
}
[/php]
May 'the Google' be with you!
@vegaseat:
It's not a good idea to rely on nonstandard extensions. You should include cstdio when using printf.
It's not a good idea to rely on nonstandard extensions. You should include cstdio when using printf.
C Syntax (Toggle Plain Text)
#include <cstdio> #include <iomanip> #include <iostream> using namespace std; int main() { double d1 = 30.768; double d2 = 1.345; double d3 = .430; printf("%8.3f\n", d1); printf("%8.3f\n", d2); printf("%8.3f\n\n", d3); cout.setf(ios::fixed); cout<< setw(8) << setprecision(3) << d1 <<endl; cout<< setw(8) << setprecision(3) << d2 <<endl; cout<< setw(8) << setprecision(3) << d3 <<endl; }
A friendly note to Siersan:
Spend some time with your editor to look at the iostream header. The one that comes with Dev-C++ leads you into a trail of internal includes to other header files which in turn include other header files and so on. Surprise, somewhere near the end is stdio.h so printf() is taken care off! Even cstdio simply includes stdio.h .....
You are right, to keep the notorius complainers of your back, it is better to include the obvious headers from the books! My oversight, I profoundly apologize!
Spend some time with your editor to look at the iostream header. The one that comes with Dev-C++ leads you into a trail of internal includes to other header files which in turn include other header files and so on. Surprise, somewhere near the end is stdio.h so printf() is taken care off! Even cstdio simply includes stdio.h .....
You are right, to keep the notorius complainers of your back, it is better to include the obvious headers from the books! My oversight, I profoundly apologize!
May 'the Google' be with you!
•
•
•
•
Originally Posted by Narue
>Spend some time with your editor to look at the iostream header.
Spend some time with the C++ standard. iostream isn't required to include cstdio or stdio.h, so your code exhibits undefined behavior.
>The one that comes with Dev-C++
Not everyone uses Dev-C++.
May 'the Google' be with you!
![]() |
Similar Threads
Other Threads in the C Forum
- Previous Thread: input data from a file into an Array
- Next Thread: abs() function operator
| Thread Tools | Search this Thread |
adobe api array arrays binarysearch calculate char cm convert copyanyfile copypdffile cprogramme createcopyoffile createprocess() csyntax directory dynamic feet fflush file floatingpointvalidation fork forloop frequency getlasterror givemetehcodez global graphics gtkgcurlcompiling hacking hardware highest homework i/o inches incrementoperators intmain() iso kernel kilometer km linked linkedlist linux linuxsegmentationfault list locate logical_drives loopinsideloop. match matrix microsoft motherboard mqqueue mysql oddnumber odf open opendocumentformat opensource openwebfoundation owf pattern pdf performance pointer posix power probleminc program programming pyramidusingturboccodes read recursion recv recvblocked repetition research scanf scheduling segmentationfault send shape socketprograming socketprogramming stack standard strchr string suggestions systemcall test unix urboc user variable voidmain() wab win32api windows.h






