bigint — SystemC как печатать переменную sc_bigint?

У меня есть переменная, объявленная так:
sc_bigint<88> х

Я хочу использовать fprintf для печати его в файл, но это приводит к ошибке.
Я могу напечатать переменную, используя cout, но мне нужно напечатать ее в определенный файл, который я открыл.

Есть идеи, как это сделать?
Может быть, простой способ перенаправить cout на нужный мне файл?

1

Решение

Попробуйте File I / O потоки, предоставляемые C ++.

#include <fstream>
#include <iostream>
using namespace std;

// .. snip

// open a file in write mode.
ofstream outfile;
outfile.open("afile.dat");

sc_bigint<88> x;
outfile << x;
1

Другие решения

Однако использование потокового ввода-вывода в C ++ (как показано в другом ответе), вероятно, является наилучшим подходом, если вы действительно хотите использовать fprintf()тогда у вас есть возможность использовать sc_dt::sc_bigint<W>::to_string() метод. Например:

#include <systemc>
#include <cstdio>

using namespace std;

int sc_main(int argc, char **argv) {
FILE *fp = fopen("sc_bigint.txt", "w");

sc_dt::sc_bigint<88> x("0x7fffffffffffffffffffff");  // (2 ** 87) - 1
fprintf(fp, "x = %s (decimal)\n", x.to_string().c_str());
fprintf(fp, "x = %s (hexadecimal)\n", x.to_string(sc_dt::SC_HEX).c_str());

return EXIT_SUCCESS;
}

Вышеупомянутая программа SystemC записывает в файл следующее sc_bigint.txt:

x = 154742504910672534362390527 (decimal)
x = 0x7fffffffffffffffffffff (hexadecimal)
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector