我正在使用cern的数据分析框架ROOT。我想要做的是在ascii文件中导出TH1F直方图的内容。我的示例代码如下从'void *'无效转换为'FILE *' - ROOT
#include "TH1.h"
#include "TH1F.h"
#include <iostream>
#include <fstream>
using namespace std;
void histo2ascii(TH1* hist){
ofstream myfile;
myfile.open ("movie_small.txt");
for (int i=1; i<=hist->GetNbinsX(); i++){
if(hist->GetBinCenter(i)>5.e-3 && hist->GetBinCenter(i)<7.e-3){
//myfile << (float) hist->GetBinCenter(i) << "\t" << hist->GetBinContent(i) << endl;
fprintf(myfile, "%.17g \t %d", hist->GetBinCenter(i), (int) hist->GetBinContent(i));
}
}
myfile.close();
}
的问题是,当我编译它(OK,通过CINT,使用.L code.C++:/)我收到以下错误
invalid conversion from ‘void*’ to ‘FILE*’
at fprintf
line。
任何想法为什么这可能会发生?
我认为你需要[找到一个好的初学者书](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list),并重新开始如何文件输入和输出在C++中使用流。提示:如果您使用'std :: cout'打印任何您获得输出的基础知识。 –
什么是“(通过cint,使用.L code.C++:/)”是什么意思? –
@ M.M ROOT使用解释器来运行通过'.L filename.C'加载的C++代码。执行'.L filename.C +'将代码编译到一个库中,而不是依赖于解释器。第二个'+'是一个错字,但是一个无害的 - ROOT仍然解释它一样。 – Chris