_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

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值