若已经确定了字符串中各个字符之间的分隔符,则可利用这两个函数将其格式化到一个字符串中,或从一个字符串中格式化出各个部分的字符串,举例如下:
wchar_t szTemp[50];
wchar_t szLineCode[50];
wchar_t szTowerCode[50];
wchar_t szDetectTime[50];
unsigned long dwFrameIndexGlobal;
已经确定字符串的格式是:
IR_线路号_杆塔号_全局帧号_YYYYMMDD_ HHMMSS_毫秒.IMA,所以可用下面的实现,而不用去一个一个的查找。
_stscanf(strFaultImageName.GetBuffer(),_T("%[^_]_%[^_]_%[^_]_%ld_%[^.]"),szTemp, szLineCode, szTowerCode, &dwFrameIndexGlobal,szDetectTime);
* 注意szTemp之类的缓冲区必须是字符组成的数组,不能用CString之类的,因为存储到DB中之后,会出现错误。
下面摘录一段别人总结的很好的文章。
[a-z]匹配a-z之间的任意字符,[ab,]匹配a、b、,、中的任意一个字符,
[^a]匹配非a的任意字符
常见用法:
sscanf("jonathandj","%4s",buf); jona
sscanf("jonathandj dujuan","%[^ ]",buf); jonathandj
sscanf("1234jonathandj","%[1-9]",buf); 1234
sscanf("a123","%[1-9]",buf); NULL
sscanf("123jonathandjDUJUAN","%[^A-Z]",buf); 123jonathandj
sscanf("2983/jonathandj-com.cn","%*[^/]/%[^-]",buf); jonathandj
sscanf("jonathan, dj","%*s%s",buf); dj