2013-07-30 3 views
0

sscanf를 사용하여이 줄에서 정수 (레이어, ieta, 깊이)를 얻을 수 있도록 도와 줄 수 있습니까? 나는 (1) 전에 별도의 함수를 사용했고 효과가 있었다. 하지만 난 그냥 (2) 새로운 대신 뭔가를 시도하고 프로그램은 각 변수에 대해 0을 반환합니다.sscanf를 사용하여 연속 문자열 구문 분석

(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

이 같은 문자열 초기화 할 수 없습니다 :

char histoName [100] = event2->GetName(); 

그것은 할 필요가 :

char histoName [100]; 
strcpy(histoName, event2->getName());