Печать в файл из MPFR
Я хочу напечатать результат расчета, используя MPFR
подать, но я не знаю как. MPFR
используется для выполнения операций с плавающей запятой с высокой точностью. Чтобы распечатать mpfr_t
номер используемой вами функции:
size_t mpfr_out_str (FILE *stream, int base, size t n, mpfr t op, mp rnd t rnd)
Я думаю, моя проблема в том, что я не понимаю FILE*
объекты и как они связаны с fstream
объекты.
Если я изменю my_file
в mpfr_out_str
линия к stdout
затем число будет выведено на экран, как я и надеялся, но я не знаю, как вставить его в файл.
#include <mpfr.h>
#include <iostream>
#include <fstream>
using namespace std;
int main() {
mpfr_t x;
mpfr_init(x);
mpfr_set_d(x, 1, MPFR_RNDN);
ofstream my_file;
my_file.open("output.txt");
mpfr_out_str(my_file, 2, 0, x, MPFR_RNDN);
my_file.close();
}
2 ответа
Можно использовать методы std::ostream с функциями mpfr, такими как mpfr_as_printf или mpfr_get_str. Однако это требует дополнительного выделения строки.
#include <mpfr.h>
#include <iostream>
#include <fstream>
using namespace std;
int main() {
mpfr_t x;
mpfr_init(x);
mpfr_set_d(x, 1, MPFR_RNDN);
ofstream my_file;
my_file.open("output.txt");
char* outString = NULL;
mpfr_asprintf(&outString, "%RNb", x);
my_file << outString;
mpfr_free_str(outString);
my_file.close();
mpfr_clear(x);
}
После небольшой работы я нашел это, чтобы заменить нижние 4 строки кода:
FILE* my_file;
my_file = fopen("output.txt", "w");
mpfr_out_str(my_file, 2, 0, x, MPFR_RNDN);
fclose(my_file);