www.pudn.com > vlong.rar > vlong.h


#ifndef VLONG_H_ 
#define VLONG_H_ 
 
#include  
#include  
#include  
#include  
#include  
#include  
#include  
 
 
using std::cout; 
using std::cin; 
using std::string; 
using std::endl; 
using std::vector; 
using std::deque; 
using std::cerr; 
using std::stringstream; 
using std::ostream; 
using std::istream; 
using std::domain_error; 
 
const int seg_length = 8; 
const long seg_num = 100000000; 
const long divide = 10000; 
 
class vlong 
{ 
public: 
	vlong(); 
	vlong(const vlong&); 
	vlong(const string&); 
	vlong(const int&); 
	vlong(const char*); 
	vlong(const vector&, bool); 
	 
	vlong& operator=(const vlong&); 
	vlong& operator=(const string&); 
	vlong& operator=(const int&); 
	vlong& operator=(const char*); 
	vlong& operator=(const vector&); 
	 
	vlong& operator++(); 
	vlong& operator--(); 
 
	 
	void output() const; 
	void output_num_vector() const; 
 
	const string get_str() const; 
	const bool get_sig() const; 
	void set_sig(bool); 
	const int length() const; 
	const vector get_vec() const; 
 
protected: 
	void input(); 
	void str_to_vec(); 
	void vec_to_str(); 
	void check_input(); 
	bool check_positive(string&); 
 
private: 
	string num_str; 
	vector num_vector; 
	bool is_positive; 
}; 
 
ostream& operator<<(ostream&, const vlong&); 
istream& operator>>(istream&, vlong&); 
 
const vlong operator+(const vlong&, const vlong&); 
const vlong operator-(const vlong&);  
const vlong operator-(const vlong&, const vlong&); 
const vlong operator*(const vlong&, const vlong&); 
const vlong operator/(const vlong&, const vlong&); 
const vlong operator%(const vlong&, const vlong&); 
const vlong operator+(const vlong&, const int); 
const vlong operator-(const vlong&, const int); 
const vlong operator*(const vlong&, const int); 
const vlong operator/(const vlong&, const int); 
const vlong operator%(const vlong&, const int); 
const vlong operator+(const vlong&, const string&); 
const vlong operator-(const vlong&, const string&); 
const vlong operator*(const vlong&, const string&); 
const vlong operator/(const vlong&, const string&); 
const vlong operator%(const vlong&, const string&); 
const vlong operator+(const int, const vlong&); 
const vlong operator-(const int, const vlong&); 
const vlong operator*(const int, const vlong&); 
const vlong operator/(const int, const vlong&); 
const vlong operator%(const int, const vlong&); 
const vlong operator+(const string&, const vlong&); 
const vlong operator-(const string&, const vlong&); 
const vlong operator*(const string&, const vlong&); 
const vlong operator/(const string&, const vlong&); 
const vlong operator%(const string&, const vlong&); 
const vlong operator+(const int, const string&); 
const vlong operator-(const int, const string&); 
const vlong operator*(const int, const string&); 
const vlong operator/(const int, const string&); 
const vlong operator%(const int, const string&); 
const vlong operator+(const string&, const int); 
const vlong operator-(const string&, const int); 
const vlong operator*(const string&, const int); 
const vlong operator/(const string&, const int); 
const vlong operator%(const string&, const int); 
const vlong operator+=(vlong&, const vlong&); 
const vlong operator+=(vlong&, const int); 
const vlong operator+=(vlong&, const string&); 
const vlong operator-=(vlong&, const vlong&); 
const vlong operator-=(vlong&, const int); 
const vlong operator-=(vlong&, const string&); 
const vlong operator*=(vlong&, const vlong&); 
const vlong operator*=(vlong&, const int); 
const vlong operator*=(vlong&, const string&); 
const vlong operator/=(vlong&, const vlong&); 
const vlong operator/=(vlong&, const int); 
const vlong operator/=(vlong&, const string&); 
const vlong operator%=(vlong&, const vlong&); 
const vlong operator%=(vlong&, const int); 
const vlong operator%=(vlong&, const string&); 
 
 
 
#include "vlong.cpp" 
 
#endif /*VLONG_H_*/