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

时间:2024-01-05 20:42:50

一个小问题:原始字符串如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;
}