C++ 中数串互转、进制转换的类

 1 /********************************************************************
 2 created:    2014/03/16 22:56
 3 filename:    main.cpp
 4 author:        Justme0 (http://blog.csdn.net/justme0)
 5 
 6 purpose:    C++ 中数串互转、进制转换的类
 7 *********************************************************************/
 8 
 9 #define _CRT_SECURE_NO_WARNINGS
10 #include <iostream>
11 #include <string>
12 #include <cassert>
13 using namespace std;
14 
15 /*
16 ** Int 类用于数的进制转换及与字符串互转,目前只支持非负整数
17 */
18 class Int {
19 public:
20     /*
21     ** 用数构造,默认构造为0
22     */
23     Int(int i = 0) : num(i) {}
24 
25     /*
26     ** 用字符串构造,radix 为字符串中的数的进制,默认十进制
27     */
28     Int(const string &s, int radix = 10)
29         : num(strtol(s.c_str(), NULL, radix)) {}
30 
31     /*
32     ** 获取整数值
33     */
34     int to_int() const {
35         return num;
36     }
37 
38     /*
39     ** 获取字符串形式,可设定获取值的进制数,默认为十进制
40     */
41     string to_str(int radix = 10) const {
42         char s[35];    // int 最大是31个1
43         return _itoa(num, s, radix);
44     }
45 
46 private:
47     int num;
48 };
49 
50 int main(int argc, char **argv) {
51     assert(string("1110") == Int(14).to_str(2));
52     assert(14 == Int("1110", 2).to_int());
53     assert(20 == Int("6").to_int() + Int("14").to_int());
54     assert(13 == Int(Int(1101).to_str(), 2).to_int());
55 
56     cout << "ok" << endl;
57 
58     system("PAUSE");
59     return 0;
60 }

 

posted on 2014-03-17 19:13  jjtx  阅读(312)  评论(0编辑  收藏  举报

导航