C++的find函数使用小技巧

一个小问题:原始字符串如CRYPT,FUNCTION,我要确定里面是否存在CRYPT,于是调用C++的find()函数,结果判断是不存在,怎么回事?

我的判断代码
if(strUseFlagsTmp.Find("CRYPT")) lpImport->fwUse = lpImport->fwUse|WFS_PIN_USECRYPT; //用于加密解密
代码执行完结果是fwUse中没有CRYPT值。

原因是a.find(b),如果b在a里则返回位置,不在返回string::npos。
上面语句执行完CRYPT在,返回了位置0,if去判断就是假也就是不存在了。


正确的判断语句是这样
if(strUseFlagsTmp.Find("CRYPT")==string::npos)
{}
else{
lpImport->fwUse = lpImport->fwUse|WFS_PIN_USECRYPT;
}

posted @ 2018-04-13 10:49  一只羊JAS  阅读(1342)  评论(0编辑  收藏  举报