我正在使用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