string find方法的一个诡异有关问题
string find方法的一个诡异问题C/C++ codeint nstr.find(domain)bool bdomain(str.find(domain))0boo
string find方法的一个诡异问题
C/C++ codeint 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也比较也行
[解决办法]