2017-03-22 102 views
0
unsigned short octet2, octet3, octet4; 
sscanf(ipAddr.c_str(), "%hu.%hu.%hu.%hu", &octet2, &octet2, &octet3, &octet4); 

ipAddr是一個字符串。將IP地址分成八位字節,但用sscanf跳過第一個八位字節

從上面的代碼,它成功地打破了八位組。但是,我想避免觸摸IP地址的第一個八位字節。我想避免兩次寫入octet2的額外操作。

例如,IP地址爲1.2.3.4,我會打破了IP地址爲2,然後是3,然後是4而不觸及1

我的業務將超過一百萬次完成,除非有一個比sscanf更好的方法,請讓我知道。

+0

有你嘗試這個'sscanf(ipAddr.c_str(),「%* hu。%hu。%hu。%hu」,&octet2,&octet2,&octet3,&octet4);'*是在讀取值 –

+1

後忽略它什麼問題? –

+0

問題是'&'而不是'%'... –

回答

3

你可以掃描而是由*前綴第一格式說明符的第一個參數不能儲存告訴sscanf解析,但不存儲領域(而你只需要在這種情況下,3個參數):

sscanf(ipAddr.c_str(), "%*hu.%hu.%hu.%hu", &octet2, &octet3, &octet4); 
相關問題