Construction From vector<char> ?

Marc Glisse marc.glisse at normalesup.org
Wed Aug 13 19:38:49 CEST 2008


On Wed, 13 Aug 2008, Robert Evans wrote:

> Also very useful for me would be the output of an mpz_class object into
> an array (vector<char>).  Perhaps there is a way to do this via the
> ostream operators?  My basic problem is:  we are already using byte
> arrays which represent trans-64 bit numbers.  I could do a HUGE amount of
> refactoring of really bad code which manipulates such arrays if I could
> construct a mpz_class from such an array, do the arithmetic within GMP,
> output back into an array.   The C++ interface seems to character-based
> I/O only.

I am having a hard time understanding what you say. You are complaining 
that the interface is character-based and you would like something that 
interacts better with a vector of characters...

If as I believe your vector<char> is just a string with a silly name, the 
conversions are pretty trivial, and I gave you two ways (there are many 
others) to go from vector<char> to string. The reverse direction is just 
as easy.

The only other thing your vector could be is like a gmp representation 
with 8-bit limbs, which sounds very strange so I am not considering it.

If you think the conversions include too many copies, you can use the 
mpn_set_str function for instance, that takes a char* and a length instead 
of expecting a null char to mark the end. But beware that you need to deal 
with the allocations yourself then.

-- 
Marc Glisse


More information about the gmp-discuss mailing list