高精度整形数封装类。
操作符<<和>>注意使用友元标记,否则编译错误。
#include#include #include using namespace std;struct bign { vector num; bign() { num.push_back(0); } bign(const char* str) { *this = str; } bign &operator = (const char* str) { string s = str; num.clear(); for (int i=s.size()-1; i>=0; --i) { char c = s[i]; num.push_back(c - '0'); } return *this; } bign operator + (const bign &n) const { bign tmp; tmp.num.clear(); int a = num.size(); int b = n.num.size(); int d = a > b ? b : a; int c = 0; for (int i=0; i b) { for (int i=d; i =0; --i) { if (num[i] != n.num[i]) { return num[i] < n.num[i]; } } return false; } friend istream &operator >> (istream &in, bign &n) { string s; in >> s; n = s.c_str(); return in; } friend ostream &operator << (ostream &out, const bign &n) { for (int i=n.num.size()-1; i>=0; --i) { out << n.num[i]; } return out; }};int main() { bign n = "123"; bign m; m = "1123"; cout << n+m << endl; cout << (n << endl; return 0;}