我使用函数strtol将Hex-CString转换为long。
CString data = "A";
TCHAR *end = NULL;
long value = strtol(data, &end, 16);
乍一看,一切看起来都很好。 " A"成为10," AC"变为172和" ACC"变成了2764.你所期待的一切。
不幸的是,如果只有CString的开头是有效的十六进制值,strtol也会转换该值。
" ACCUMULATOR"也变成了2764!
我该如何防止这种情况?
或者我如何检查我的CString是否是有效的十六进制数?
答案 0 :(得分:2)
检查是否*end == '\0'
。这意味着解析了整个字符串,直到空终止符。
如果是ACCUMULATOR
,则会指向字符U
。因此,您可以找到字符串有效的点