Last Updated : 23 Jul, 2025
What is string::npos?
Syntax:
static const size_t npos = -1;
Where npos is a constant static value with the highest possible value for an element of type size_t and it is defined with -1.
Note: std::string::npos is a constant that holds the largest possible value of size_t type ( 18446744073709551615 on 64-bit systems ), which is an unsigned integer type. Hence, -1 corresponds to the actual value of std::string::npos.
Program 1: Below is the C++ program to illustrate the use of string::npos.
C++
// C++ program to demonstrate the use
// of string::npos
#include <bits/stdc++.h>
using namespace std;
// Function that using string::npos
// to find the index of the occurrence
// of any string in the given string
void fun(string s1, string s2)
{
// Find position of string s2
int found = s1.find(s2);
// Check if position is -1 or not
if (found != string::npos) {
cout << "first " << s2 << " found at: " << (found)
<< endl;
}
else
cout << s2 << " is not in"
<< "the string" << endl;
}
// Driver Code
int main()
{
// Given strings
string s1 = "geeksforgeeks";
string s2 = "for";
string s3 = "no";
// Function Call
fun(s1, s2);
return 0;
}
first for found at: 5
Explanation: In the above program string::npos constant is defined with a value of -1, because size_t is an unsigned integral type, and -1 is the largest possible representable value for this type.
What if the valid position for a substring is not found in a string?
Various member functions of the String class return the default value of std::string::npos if a valid position or index for a substring is not found in the string.
Below are the String Functions that return the value of std::string::npos in the case of failure:
Program 2: C++ Program to Illustrate that Some String Functions return the value of std::string::npos in case of failure.
C++
#include <iostream>
using namespace std;
int main()
{
std::string str = "Hello, world!";
// Returns std::string::npos because "abc" is not found.
size_t position = str.find("abc");
if (position == std::string::npos)
cout << "Substring not found";
else
cout << position;
return 0;
}
Substring not found
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4