SystemC with c ++ - 如何打印sc_bigint变量?

时间:2014-12-01 09:31:28

标签: c++ bigint systemc

我有一个变量声明如下:     sc_bigint< 88> X

我想使用fprintf将其打印到文件中,但这会产生错误。 我可以使用cout打印变量,但是我需要将它打印到我打开的特定文件中。

任何想法如何做到这一点? 也许一种简单的方法将cout重定向到我需要的文件?

2 个答案:

答案 0 :(得分:1)

尝试C ++提供的文件I / O流。

#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 :(得分:0)

使用C ++的基于流的IO(如另一个答案所示)可能是最好的方法,但是,如果你真的想使用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)