_stscanf,_stprintf的使用

 若已经确定了字符串中各个字符之间的分隔符,则可利用这两个函数将其格式化到一个字符串中,或从一个字符串中格式化出各个部分的字符串,举例如下:

 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

你可能感兴趣的:(存储)