我可以在 rcpp 源 C++ 函数中使用 fprintf 吗?

Can I use fprintf within a rcpp-sourced C++ function?

我有一些在网上找到的代码,我想在 R 项目中使用。我设法用

编译和调用所有内容
libary(Rcpp)
sourceCpp("rcpp/my_function.cpp")
my_function("testdata.dat", "testout.dat", opt_verbose = 1)

函数中有几个 fprintf 调用,例如

fprintf(stderr, "Error: minvotes < 0!\n%s", usage);

但是它们不会打印到 R 控制台。有没有办法在使用函数时看到fprintf的输出?

几件事:

a) 这在任何标准终端的标准 R 会话中工作正常:

> Rcpp::cppFunction("void printDemo() { fprintf(stderr, \"hello, world\n\"); }")
> printDemo()
hello, world
> 

请注意,我必须转义引号和反斜杠才能与 cppFunction() 一起使用。因此,如果这对您不起作用 ,则说明您的 terminal/display 有问题。你用的是哪个?

b) 但是你不应该使用它——Writing R Extensions 对此非常清楚。

c) 这就是为什么我们主要使用 wrapper Rcpp::RcoutRcpp::Rcerr 的原因,它们根据需要重定向到 R 自己的缓冲 input/output 编写 R 扩展