从 MPFR 打印到文件
Print to file from MPFR
我想打印使用 [=11=] 的计算结果来存档,但我不知道如何。 MPFR
用于高精度的浮点运算。要打印 mpfr_t
数字,您可以使用函数:
size_t mpfr_out_str (FILE *stream, int base, size t n, mpfr t op, mp rnd t rnd)
我想我的问题是我不了解 FILE*
个对象以及它们与 fstream
个对象的关系。
如果我将 mpfr_out_str
行中的 my_file
更改为 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();
}
经过不多的工作,我发现这个可以替换底部的 4 行代码:
FILE* my_file;
my_file = fopen("output.txt", "w");
mpfr_out_str(my_file, 2, 0, x, MPFR_RNDN);
fclose(my_file);
可以将 std::ostream 方法与 mpfr_as_printf 或 mpfr_get_str 等 mpfr 函数一起使用。但是,它需要额外的字符串分配。
#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);
}
我想打印使用 [=11=] 的计算结果来存档,但我不知道如何。 MPFR
用于高精度的浮点运算。要打印 mpfr_t
数字,您可以使用函数:
size_t mpfr_out_str (FILE *stream, int base, size t n, mpfr t op, mp rnd t rnd)
我想我的问题是我不了解 FILE*
个对象以及它们与 fstream
个对象的关系。
如果我将 mpfr_out_str
行中的 my_file
更改为 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();
}
经过不多的工作,我发现这个可以替换底部的 4 行代码:
FILE* my_file;
my_file = fopen("output.txt", "w");
mpfr_out_str(my_file, 2, 0, x, MPFR_RNDN);
fclose(my_file);
可以将 std::ostream 方法与 mpfr_as_printf 或 mpfr_get_str 等 mpfr 函数一起使用。但是,它需要额外的字符串分配。
#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);
}