string::npos in C++ with Examples (original) (raw)

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:🧵: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:🧵: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;

}

`

Output

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:🧵: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:🧵:npos in the case of failure:

  1. find()
  2. rfind()
  3. find_first_of()
  4. find_last_of()
  5. substr()
  6. erase()

Program 2: C++ Program to Illustrate that Some String Functions return the value of std:🧵:npos in case of failure.

C++ `

#include using namespace std;

int main() { std::string str = "Hello, world!"; // Returns std:🧵:npos because "abc" is not found. size_t position = str.find("abc");

if (position == std:🧵:npos)
    cout << "Substring not found";

else
    cout << position;

return 0;

}

`

Output

Substring not found