我試圖在字符串中找到一個字符,但我得到了意想不到的結果。我的理解是,string::find(char c)
未找到時返回-1
。但是,我收到了一些意想不到的結果。當使用== - 1時,string.find()返回true,但使用<0時返回false
即使該字符串不包含'8'
,它仍然會返回true
。
std::string s = "123456799";
if(s.find('8')<0)
cout << "Not Found" << endl;
else
cout << "Found" << endl;
//Output: Found
然而,在使用時==
不是代碼按預期工作。
std::string s = "123456799";
if(s.find('8')==-1)
cout << "Not Found" << endl;
else
cout << "Found" << endl;
//Output: Not Found
[請閱讀文檔](http://en.cppreference.com/w/cpp/string/basic_string/find)。它在哪裏說'std :: string_find'返回'-1'? – PaulMcKenzie
@PaulMcKenzie std :: string_find返回string :: npos,如果找不到,string :: npos是'static const size_t npos = -1;' – user3196144
@ user3196144注意'npos'的類型是無符號的;它的值初始化爲'-1'並不意味着它是負面的。並注意[這裏]的解釋(http://en.cppreference.com/w/cpp/string/basic_string/npos),「這是一個特殊的值,等於size_type類型表示的最大值。」 – songyuanyao