我试图搜索' ..'在表示POSIX系统上的文件路径的字符串中。我使用std :: string.find(" .."),它似乎找到了正确的索引,但是在布尔表达式中没有正确评估。
例如:
#include <string>
#include <stdio.h>
int main( int argc, char *argv[] ) {
std::string a = "abcd";
int apos = a.find( ".." );
bool test1 = a.find( ".." ) >= 0;
bool test2 = apos >= 0;
if ( test1 ) {
printf( "TEST1 FAILED: %ld >= 0!\n", a.find( ".." ) );
}
if ( test2 ) {
printf( "TEST2 FAILED %d >= 0!\n", apos );
}
}
输出:
$ g++ test.cpp -o test
$ ./test
TEST1 FAILED: -1 >= 0!
$
为什么a.find( ".." )
在布尔表达式中没有评估为-1的任何想法?
答案 0 :(得分:1)
今天刚问过这个问题。
这是因为find
返回npos
unsigned int
,它是使用-1
初始化的,但它的类型是unsigned int
,所以它大于0
find
。
您应该将npos
的结果与-1
而不是int main()
{
int n;
cin>>n;
n=n/100*100+n%100/10+n%10*10;
cout<<n;
}
进行比较。
答案 1 :(得分:0)
bool test1 = a.find( ".." ) != std::string::npos;