2 #include <cstdlib>
3 #include <string>
4 #include <climits>
5 using namespace std;
6
7 class Fixw
8 {
9 string str;
10 public:
11 Fixw(const string& s, int width) : str(s, 0, width){}
12 friend ostream& operator<<(ostream& os, Fixw& fw)
13 {
14 return os << fw.str;
15 }
16 };
17
18 typedef unsigned long ulong;
19
20 class Bin
21 {
22 ulong n;
23 public:
24 Bin(ulong nn) { n = nn; }
25 friend ostream& operator<<(ostream&, Bin&);
26 };
27
28 ostream& operator<<(ostream& os, Bin& b)
29 {
30 ulong bit = ~(ULONG_MAX >> 1);
31 while(bit)
32 {
33 os << (b.n & bit ? '1' : '0');
34 bit >>=1;
35 }
36 return os;
37 }
38
39 int main()
40 {
41 char* string = "Things that make us happy, make us wise";
42 for(int i=1; i<=strlen(string); i++)
43 {
44 cout << Fixw(string, i) << endl;
45 }
46
47 ulong x = 0xCAFEBABEUL;
48 ulong y = 0x76543210UL;
49 cout << "x in binary: " << Bin(x) << endl;
50 cout << "y in binary: " << Bin(y) << endl;
51 cin.get();
52 }