What does string::npos mean in this code?
Solution 1:
It means not found.
It is usually defined like so:
static const size_t npos = -1;
It is better to compare to npos instead of -1 because the code is more legible.
Solution 2:
string::npos
is a constant (probably -1
) representing a non-position. It's returned by method find
when the pattern was not found.
Solution 3:
The document for string::npos
says:
npos is a static member constant value with the greatest possible value for an element of type size_t.
As a return value it is usually used to indicate failure.
This constant is actually defined with a value of -1 (for any trait), which because size_t is an unsigned integral type, becomes the largest possible representable value for this type.
Solution 4:
size_t
is an unsigned variable, thus 'unsigned value = - 1' automatically makes it the largest possible value for size_t
: 18446744073709551615
Solution 5:
std::string::npos
is implementation defined index that is always out of bounds of any std::string
instance. Various std::string
functions return it or accept it to signal beyond the end of the string situation. It is usually of some unsigned integer type and its value is usually std::numeric_limits<std::string::size_type>::max ()
which is (thanks to the standard integer promotions) usually comparable to -1
.