string find方法的一个诡异问题
- C/C++ code
int n=str.find(domain);bool bdomain=(str.find(domain))<0;
bool bdomain=(str.find(domain))<0;会永远返回false,即使str.find(domain)的执行结果小于0
[解决办法]
你怎么知道结果小于0?根本不会小于0
[解决办法]
string::find()的返回值是size_t类型的,因此它永远大于0。
虽然当string::find()没有找到目标的时候,会返回npos,且npos的定义如下:
static const size_t npos = -1;
但由于它的类型是size_t,因此编译器会做出转换,因此npos的值为0xFFFFFFFF,仍然大于0。
[解决办法]
你最好不要用<0来比较,用!=string::npos比较,因为find返回的永远都是一个unsigned
[解决办法]
用-1也比较也行
[解决办法]