你们中的任何人都可以帮助我使用sscanf获取此行中的整数(图层,ieta,深度)吗?我在(1)之前使用了一个单独的函数,它起作用了。但我只想尝试新的东西(2),程序为每个变量返回0。
(1)
Int_t getIetaFromHistName (string histName)
{
Int_t IetaPos = histName.find("_Ieta"); //find position of Ieta & return as integer
Int_t IphiPos = histName.find("_Iphi");
return atoi(histName.substr(IetaPos+5,IphiPos-IetaPos-5).c_str()); //reconstruct the string (post of 1st char to be copied, string length)
};
(2)
char histoName [100] = event2->GetName();
sscanf(histoName,"H2_HB_PHI12_LAYER%d_SRCTUBE_Ieta%d_Iphi12_Depth%d",&layNo,&ietaNo,&depthNo); //string histoName = H2_HB_PHI12_LAYER10_SRCTUBE_Ieta1_Iphi12_Depth1
printf("Layer= %d , Ieta= %d , Depth= %d\n",layNo,ietaNo,depthNo);
答案 0 :(得分:0)
你无法初始化这样的字符串:
char histoName [100] = event2->GetName();
需要:
char histoName [100];
strcpy(histoName, event2->getName());