mpz_t を std::string に変換するにはどうすればよいですか?
mpz_t Var;
// Var = 5000
mpz_init_set_ui( Var, 5000 );
std::string Str = "";
// Convert Var to std::string?
mpz_clear( Var );
あなたが探しているmpz_get_str
:
char * tmp = mpz_get_str(NULL,10,Var);
std::string Str = tmp;
// In order to free the memory we need to get the right free function:
void (*freefunc)(void *, size_t);
mp_get_memory_functions (NULL, NULL, &freefunc);
// In order to use free one needs to give both the pointer and the block
// size. For tmp this is strlen(tmp) + 1, see [1].
freefunc(tmp, strlen(tmp) + 1);
mpz_t
ただし、 C++ プログラムでは使用しないでください。mpz_class
メソッドを提供するため、代わりに使用してください。実際には、割り当てられたメモリへのポインターではなく、ポインターをget_str()
返します。std::string